經常使用的3個選項app
-k: make命令發現錯誤時繼續執行,這個選項操做能夠一次發現全部未編譯成功的源文件。命令行
-n: make命令輸出將要執行的操做步驟,而不是真正執行這些操做。編譯
-f<filename>: 告訴make命令將哪一個文件做爲Makefile文件,未使用此選項狀況下,標準版make命令會在當前目錄下先尋找makefile,若是沒有繼續尋找Makefile文件。若是是Linux系統下,使用的多是GNUMake,這個版本,它將首先查找GNUmakefile文件。test
規則寫法:先寫目標名稱,而後緊跟冒號,接着空格或製表符tab,最後是隔開的文件列表(這些文件用於建立目標文件)。gcc
Myapp: main.o test.ofile
main.o: main.c main.hgc
test.o: test.c test.hmakefile
makefile文件中空格和tab是有區別的。規則所在行必須以tab開頭,用空格是不行的,Makefile文件中某行以空格結尾,也可能致使make命令執行失敗。註釋
規則都包含一個簡單的命令,該命令也能夠在命令行上執行tab
Myapp: main.o test.o
gcc -o Myapp main.o test.o
main.o: main.c main.h
gcc -c main.c
test.o: test.c test.h
gcc -c test.c
Makefile中註釋以#號開頭
MACRONNAME=value 定義宏
$( MACRONNAME) 調用宏
CC = gcc
CXX = g++
Myapp: main.o test.o
$( CC) -o Myapp main.o test.o
main.o: main.c main.h
$( CC) -c main.c
test.o: test.c test.h
$( CC) -c test.c
make命令時給出宏定義
make 「CC = gcc」
make內置特殊的宏定義
$? 當前目標所依賴的文件列表中比當前目標文件還要新的文件
$@ 當前目標的名字
$< 當前依賴文件的名字
$* 不包括後綴名的當前依賴文件的名字
(未完待續)