共用方式為


特殊的 NMAKE 巨集

NMAKE 提供數個特殊宏來代表各種檔案名和命令。 其中一些宏的用法是在預先定義的推斷規則中。 如同所有宏,NMAKE 所提供的宏會區分大小寫。

Filename 宏

檔案名宏會預先定義為相依性中指定的檔案名(磁片上不是完整檔案名規格)。 叫用時,這些宏不需要以括弧括上; cl 只 $ 指定 ,如下所示。

Macro 意義
$@ 目前目標的完整名稱(路徑、基底名稱、延伸模組),如目前指定。
$$@ 目前目標的完整名稱(路徑、基底名稱、延伸模組),如目前指定。 只有在相依性中作為相依性才有效。
$* 目前目標的路徑和基底名稱減去副檔名。
$** 目前目標的所有相依專案。
$? 具有晚于目前目標時間戳記的所有相依專案。
$< 具有比目前目標晚時間戳記的相依檔案。 只有在推斷規則的命令中才有效。

若要指定預先定義的檔案名宏的一部分,請附加宏修飾詞,並在括弧中加入 cl 修改過的宏。

修飾詞 產生的檔案名部分
D 磁片磁碟機加號目錄
B 基底名稱
F 基底名稱加上副檔名
R 磁片磁碟機加目錄加上基底名稱

遞迴宏

使用遞迴宏以遞迴方式呼叫 NMAKE。 遞迴會話會繼承命令列和環境變數宏和 Tools.ini 資訊。 它們不會繼承 makefile 定義的推斷規則或 .SUFFIXES.PRECIOUS 規格。 有三種方式可將宏傳遞至遞迴 NMAKE 會話:

  • 在遞迴呼叫之前, SET 使用 命令設定環境變數。
  • 在命令中定義遞迴呼叫的宏。
  • 或者,在 中 Tools.ini 定義宏。
Macro 定義
MAKE 原本用來叫用 NMAKE 的命令。

$(MAKE) 會提供 的完整路徑。 nmake.exe
MAKEDIR 叫用 NMAKE 時的目前目錄。
MAKEFLAGS 目前生效的選項。 使用 作為 /$(MAKEFLAGS) 。 選項 /F 不在 uded 中 cl 。

命令宏和選項宏

命令宏已針對 Microsoft 產品預先定義。 Options 宏代表這些產品的選項,且預設為未定義。 這兩者都用於預先定義的推斷規則中,而且可用於描述區塊或使用者定義推斷規則。 您可以在 uding 選項中 cl 重新定義命令宏來代表部分或所有命令列。 選項宏會在未定義時產生 Null 字串。

工具 命令宏 定義為 Options 宏
巨集群組譯工具 AS mlml64 AFLAGS
C 編譯器 CC cl CFLAGS
C++ 編譯器 CPP cl CPPFLAGS
C++ 編譯器 CXX cl CXXFLAGS
Resou rc e Compiler RC rc RFLAGS

環境變數宏

NMAKE 會繼承會話開始前所存在的環境變數巨集定義。 如果已在作業系統環境中設定變數,則會以 NMAKE 宏的形式提供。 繼承的名稱會轉換成 uppe rc ase。 繼承會在前置處理之前發生。 使用 /E 選項可讓繼承自環境變數的宏覆寫 makefile 中具有相同名稱的任何宏。

您可以在會話中重新定義環境變數宏,而這會變更對應的環境變數。 您也可以使用 SET 命令來變更環境變數。 不過,使用 SET 命令來變更會話中的環境變數並不會變更對應的宏。

例如:

PATH=$(PATH);\nonesuch

all:
    echo %%PATH%%

在此範例中,變更會變更 PATH 對應的環境變數 PATH ;它會附加 \nonesuch 至您的路徑。

如果環境變數定義為在 makefile 中語法不正確的字串,則不會建立任何宏,也不會產生任何警告。 如果變數的值包含貨幣符號 ($),NMAKE 會將它解譯為宏調用的開頭。 使用 宏可能會導致非預期的行為。

另請參閱

巨集和 NMAKE