make 命令
make -p // 列出內建的預設規則
make -n // 印出讀入Makefile後會執行的命令(僅顯示,並不會執行)
gcc 命令
gcc -MM // 生成一張依賴關係表
基本用法
目標檔名: 關聯檔名 關聯檔名
只要"關聯檔名"有任何一個變動,"目標檔名"就會重新建立
內建標籤
.PHONY: // 指定該項目為假項目
.SUFFIXES: // 自定義副檔名
如: (定義為假項目,預設就不會執行了。要指定才會呼叫,比如 make clean)
.PHONY: clean
clean:
-rm *.o
如:(把 .c 指定成跟 .o 一樣的執行動作)
.SUFFIXES: .o .c
.c.o:
$(CC) $(CFLAGS) -c $<
內建變數
$@ // 庫名,如xxx.a xxx.o。當前目標的全路徑名。可用於用戶定義的目標名的相關行中(:左邊)
$* // 不含副檔名的名稱(:左邊)
$< // 比目標文件時間更新的依賴文件名(第一個:右邊的)
$: // 無
$? // 比目標文件時間更新的依賴文件名(:右邊)
$^ // 所有必要條件的檔名(:右邊)
% // 萬用字元
# // 註解
\ // 連接符號
CC CFLAGS
CXX CXXFLAGS
RANLIB
NM
AR ARFLAGS
AS ASFLAGS
RM RMFLAGS
變數給值
:= // 立即指定
?= // 不存在就指定
+= // 附加
= // 使用時再指定
clean 相關
- // 忽略命令結果 (有錯誤產生也不停止)
install 相關
@ // 在執行時不顯示命令
&& // 當前面的命令成功時,才能執行後面的命令,用法同 shell
() // 括號能確保所有處理都是由同一個shell完成的,如 "(cd dir; make)"
CFLAGS 參數
-lc // 使用標準庫
-lpthread // 使用 pthread
-lm // 使用數學庫
沒有留言:
張貼留言