嵌套執行的makefile中, 變數和 變數不管是否 都要傳遞到下層的Makefile中,特別是 ,它包含了make的參數信息 使用 來定義命令包 在makefile中,依賴關係可能會需要包含一系列的頭文件,可以使用 來讓它自動生成依賴關係,如果把標準庫的依賴關係也包括進來,需要使用 makefil ...
- 嵌套執行的makefile中,
SHELL
變數和MAKEFLAGS
變數不管是否export
都要傳遞到下層的Makefile中,特別是MAKEFILES
,它包含了make的參數信息 - 使用
define endef
來定義命令包 - 在makefile中,依賴關係可能會需要包含一系列的頭文件,可以使用
$gcc –MM
來讓它自動生成依賴關係,如果把標準庫的依賴關係也包括進來,需要使用$gcc –M
- makefile使用
目標:依賴項
表示依賴關係,併在接下來寫生成規則 - makefile中
tab
和空格不是一回事,規則使用tab
縮進,編輯器不要設置諸如“將tab替換為空格之類的選項” wildcard
是makefile的關鍵字,作用是讓通配符在變數中展開- makefile中的target也是一個變數--—目標變數
- makefile中如果要使用
%
,@
等,需要用/
來轉義
偽目標
all 是所有目標的偽目標,功能是編譯所有目標
clean 刪除所有被make創建的文件
install 安裝已經編譯好的程式,其實就是把目標執行文件拷貝到指定目標中
print 這個偽目標的功能是列出改變過的源文件
tar 把源程式打包備份,就是一個tar文件
dist 創建一個壓縮文件,一般吧tar文件壓縮成Z文件或gz文件
TAGS 更新所有目標,以備完整的重編譯使用
check/test 測試makefile流程
例子
circle:main.o circle.o
cc main.o circle.o -o circle
main.o:main.c
cc -c main.c
circle.o :circle.c
cc -c circle.c
clean:
rm *.o *.h circle