分享方式:


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

您還想知道關於哪些方面的詳細資訊?

Makefile 中的內嵌檔案

另請參閱

NMAKE 參考