Makefile 中的命令
描述區塊或推斷規則會指定要在相依性過期時執行的命令區塊。 NMAKE 會在執行之前先顯示每個指令,除非/S
使用、 .SILENT
!CMDSWITCHES
或 @
。 如果描述區塊後面沒有命令區塊,NMAKE 會尋找相符的推斷規則。
命令區塊包含一或多個命令,每個命令都位於自己的行上。 相依性或規則與命令區塊之間不會顯示空白行。 不過,只顯示包含空格或索引標籤的行;這一行會解譯為 Null 命令,而且不會發生任何錯誤。 命令行之間允許空白行。
命令行的開頭為一或多個空格或索引標籤。 反斜杠 (\
) 後面接著換行符,會解譯為命令中的空格。 使用行尾的反斜杠,將命令繼續下一行。 NMAKE 會以常值方式解譯反斜杠,如果任何其他字元,包括空格或索引標籤,則遵循反斜杠。
前面有分號 (;
) 的命令可以出現在相依性行或推斷規則上,無論命令區塊是否遵循:
project.obj : project.c project.h ; cl /c project.c
命令修飾詞
您可以在命令前面指定一或多個命令修飾詞,選擇性地以空格或索引標籤分隔。 如同命令,修飾詞必須縮排。
修飾詞 | 目的 |
---|---|
@ 命令 |
防止顯示命令。 不會隱藏命令顯示。 根據預設,NMAKE 會回應所有執行的命令。 使用 /S 來隱藏整個makefile的顯示;使用 .SILENT 來隱藏makefile部分的顯示。 |
- [number] 命令 |
關閉命令的錯誤檢查。 根據預設,當命令傳回非零結束代碼時,NMAKE 會停止。 如果使用 -number,NMAKE 會在結束代碼超過 數位時停止。 虛線和數字之間無法顯示空格或索引標籤。至少有一個空格或索引標籤必須出現在數位和命令之間。 使用 /I 關閉整個Makefile的錯誤檢查;使用 .IGNORE 來關閉makefile部分的錯誤檢查。 |
! 命令 |
如果命令使用 (相依性中的所有相依檔案)或 $? (相依性中的所有相依檔案,且相依性中具有比目標晚時間戳的相依檔案),則執行每個相依檔案的命令。$** |
Filename-parts 語法
命令中的 Filename-parts 語法代表第一個相依檔名的元件(這可能是隱含相依專案)。 檔名元件是檔案的磁碟驅動器、路徑、基底名稱和擴展名,而不是磁碟上存在。 使用 %s
來表示完整檔名。 使用 %|
[parts]F
(垂直橫條字元遵循百分比符號)來代表檔名的一部分,其中 元件 可以依任何順序為零或多個下列字母。
信函 | 描述 |
---|---|
沒有字母 | 完整名稱 (與 %s 相同) |
d |
磁碟機 |
p |
路徑 |
f |
檔案基底名稱 |
e |
副檔名 |
例如,如果檔案名為 c:\prog.exe
:
%s
變成c:\prog.exe
%|F
變成c:\prog.exe
%|dF
變成c
%|pF
變成c:\
%|fF
變成prog
%|eF
變成exe