Makefile學習總結

Makfile的作用就是讓編譯器能夠自動編譯我們的代碼,他的基本原理如下:

目標:條件
動作
例如:
main.o : main.c
gcc -g -c main.c -o main.o
根據(jù)給定的條件執(zhí)行相應的動作到達需要的目標,這個和現(xiàn)實生活中解決問題的一般思路是一樣的。

Makefile的自動變量:

Makefile 有六個自動變量:$@代表目標,$^是第一個條件,$?是所有時間比目標更新的條件,$<是去掉重復部分的所有條件,$+沒有去掉重復部分的所有條件,$*是目標的名稱,就是沒有后綴的目標,以前對這幾個變量總是搞不清楚,但是看了趙鑫磊著的《Linux就是這個范兒》之后就完全理解了,這本書里面的Linux Shell和Makefile的相關知識寫得很好。

Makefile的函數(shù)定義和調用

函數(shù)定義:
define func
echo "func be called"
echo "param $1 $2"
endef
函數(shù)調用:
$(call func,a,b) 輸出如下
func be called
param a b

Makefile命令修飾符

@,-,+的用處,例如
@echo "some message" 意思是這個命令執(zhí)行不輸出到stdout,如果這個命令有創(chuàng)建中間文件(.o文件)也不會創(chuàng)建;
-這個表示執(zhí)行這個命令即使遇到錯誤也不要停止,例如:
-include(sub-makefile.mk) 等效sinclude
+符號用于調試,被它修改的目標、命令或者函數(shù)等只會輸出執(zhí)行的信息到stdout,而不會實際執(zhí)行這個命令。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容