makefile

make命令

選項及參數

經常使用的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內置特殊的宏定義

$? 當前目標所依賴的文件列表中比當前目標文件還要新的文件

$@ 當前目標的名字

$< 當前依賴文件的名字

$*  不包括後綴名的當前依賴文件的名字

 

多個目標

(未完待續)

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息