目標,依賴項,命令
<依賴
目標中的
第乙個目
標名字,
如果依賴
目標是以
模式
(< 依賴目標中的第乙個目標名字,如果依賴目標是以模式(%)定義的,那麼
《依賴目標中的
第乙個目
標名字,
如果依賴
目標是以
模式(《將是符合模式的一系列的檔案集。 注意,其是乙個乙個取出來的
$@ 規則中的目標
$^ 規則中的所有依賴
cc 即gcc
cflags 編譯時使用的選項
ldflags 鏈結庫使用的選項
variable=value;
variable:=value;
其中,=可以使用後面定義的變數,:=只能使用前面定義的變數;
字首@ 只輸出命令的執行結果,出錯的話停止執行;
字首- 命令執行有錯誤的話,忽略錯誤繼續執行;
無字首 輸出執行的命令以及命令執行的結果,出錯的話停止執行;
ifeq (arg1,arg2) #判斷括號內兩個引數是否相等
...else
...endif
ifneq 和ifeq用法類似;
ifdef args
...else
...endif
$(shell )
或者``
all 所有目標的目標,其功能一般是編譯所有目標;
clean 用於刪除make建立的檔案
install 安裝已編譯好的程式,其實就是把目標可執行檔案拷貝到指定的目錄中
print 列出改變過的原始檔
tar 源程式打包備份
dist 建立乙個壓縮檔案,.gz
tags 更新所有目標
check 或 test 一般用來測試makefile流程
(1) % 表示乙個或任意多個字元
(2) 目標中需要有%,依賴目標也可以有%,依賴目標的%取值取決於目標的%取值;
(3) %發生在執行時;
範例:
%.o: %.c
$(cc) -c $(cflags) $(cppflags) $< -o $@
將所有的.c生成.o檔案
(4) 老式風格字尾
.c.o 等價於 %.o: %c
.suffixes用來定義預設字尾表
範例:
.suffixes: .c .cpp .o
make -c diretory
跳轉到指定目錄下,執行該目錄下的makefile檔案
模式字串替換函式
格式:
$(patsubst ,,)
使用text裡面和pattern符合的字串替換成replacement字串
make
make 後面可以追加選項;
make -c ../../test # 切換當前工作目錄到指定目錄下,執行該目錄下的makefile檔案
make 後面可以追加變數定義
make "cflag = -g" # 給makefile檔案新增乙個變數,若變數已經存在覆蓋其初始值
make 後面可以追加生成目標
make add.o # 以add.o為目標生成檔案,不指定,預設makefile第乙個目標
# 編譯時,優先在path尋找庫
ldflag= -wl,-rpath=/path
g++ -o file.o file.c $(ldflag)
Makefile的簡單使用
簡介 乙個工程中的原始檔不計其數,其按型別 功能 模組分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些 檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為 makefile就像乙個shell 指令碼一樣,其中也可以執行作業系統的命令。lin...
makefile的簡單使用
main.c include test1.h include test2.h include int main test1.c include test1.h include void test1 func char str test1.h ifndef test1 h define test1 h...
makefile的簡單使用
乙個工程中的原始檔不計其數,其按型別 功能 模組分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為 makefile就像乙個shell指令碼一樣,其中也可以執行作業系統的命令。linux 環境...