共用方式為


MSBuild (Visual C++) 概觀

更新:2011 年 3 月

MSBuild 是 Visual C++ 專案的標準建置系統。 在 Visual Studio 整合式開發環境 (IDE) 中建置專案時,會用到 msbuild.exe 工具、XML 專案檔和選擇性設定檔。 您可以在命令列上執行 msbuild.exe 加專案檔,不過 IDE 另外提供一個使用者介面,讓您更容易進行設定和建置專案。 本概觀會說明 Visual C++ 如何使用 MSBuild 系統。

必要條件

請閱讀以下 MSBuild 相關文件。

命令列中的 MSBuild

MSBuild 命令列參考文件中提及的下列陳述式說明 msbuild.exe 工具使用隱含或明確的 project file 引數 (Visual C++ 專案為 .vcxproj 檔),以及不使用或使用多個命令列 options。

msbuild.exe [project file] [options]

使用 /target (或 /t) 以及 /property (或 /p) 命令列選項,可覆寫專案檔中指定的屬性和目標。

專案檔有一個重要功能是指定「目標」(Target,這是指套用至專案的特定作業),以及執行這項作業所需的輸入和輸出。 專案檔可以指定一個或多個目標,其中可以包括預設目標。

每個目標由一組一個或多個「工作」(Task) 所組成, 每個工作又各由一個 .NET Framework 類別代表,其中包含一個可執行命令。 例如,CL 工作包含 cl.exe 命令。

「工作參數」(Task Parameter) 是類別工作的屬性,通常代表可執行命令的命令列選項。 例如,CL 工作的 FavorSizeOrSpeed 參數對應到 /Os/Ot 編譯器選項。

其他工作參數都支援 MSBuild 基礎結構。 例如,Sources 工作參數指定可由其他工作使用的一組工作。 如需 MSBuild 工作的詳細資訊,請參閱 MSBuild 工作參考

大部分工作都需要輸入和輸出,例如檔案名稱、路徑以及字串、數值或布林參數。 例如,一般輸入範例是要進行編譯之 .cpp 原始程式檔的名稱。 重要輸入參數的範例則是指定組建組態和平台的字串,如 "Debug|Win32"。 輸入和輸出是由一個或多個使用者定義的 XML Item 項目 (包含在 ItemGroup 項目中) 所指定。

專案檔也可以指定使用者定義的「屬性」(Property) 和「項目-定義-群組」(Item-Definition-Group)「項目」(Item)。 屬性和項目會形成名稱/值組,名稱/值組可以在組建中當做變數。 名稱/值組的名稱部分會定義「巨集」(Macro),值部分則宣告「巨集值」(Macro Value)。 屬性巨集可使用 $(<名稱>) 標記法來存取,項目巨集則使用 %(<名稱>) 標記法來存取。

專案檔中的其他 XML 項目可以用來測試巨集,接著依條件設定任何巨集的值或控制組建的執行。 巨集名稱和常值字串可以串連在一起,產生路徑和檔案名稱之類的建構。 在命令列上,/property 選項可以設定或覆寫專案屬性。 在命令列上不能參考項目。

MSBuild 系統可以在一個目標之前或之後,依條件執行另一個目標。 此外,系統也可以根據目標所用的檔案是否較系統發行的檔案新,據以建置目標。

IDE 中的 MSBuild

當您在 IDE 中設定專案屬性然後儲存專案時,Visual C++ 會將專案設定寫入至專案檔。 專案檔包含專案專屬的設定,但不包含建置專案需要的所有設定。 專案檔包含 Import 項目,這些項目包括額外「支援檔案」(Support File) 的網路,支援檔案中包含建置專案需要的其餘屬性、目標和設定。

支援檔案中大部分目標和屬性只是為了實作建置系統而存在。 下一節討論一些有用的目標和屬性,您可以在 MSBuild 命令列中指定這些目標和屬性。 若想了解其他目標和屬性,請瀏覽支援檔案目錄中的檔案。

支援檔案目錄

根據預設,主要的 Visual C++ 支援檔案位於下列目錄。

目錄

說明

drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\

包含目標使用的主要目標檔案 (.targets) 和屬性檔案 (.props)。 根據預設,$(VCTargetsPath) 巨集會參考這個目錄。

drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\platform\

包含平台專屬的目標和屬性檔案,用來覆寫其父目錄中的目標和屬性。 這個目錄也包含 .dll 檔,用來定義此目錄中目標所使用的工作。

platform 預留位置代表 ItaniumWin32x64 子目錄。

drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\platform\ PlatformToolsets\toolset\

包含可用來讓組件產生 9.0 或 Visual C++ 10.0 應用程式的目錄。

platform 預留位置代表 ItaniumWin32x64 子目錄。 toolset 預留位置代表 v90v100 Toolset 子目錄。

支援檔案

支援檔案目錄包含具有下列副檔名的檔案。

副檔名

說明

.targets

包含 Target XML 項目,用來指定目標執行的工作。 也可能包含 Property Group、Item Group、Item Definition Group 和使用者定義的 Item 項目,這些項目用來指派檔案和命令列選項給工作參數。

如需詳細資訊,請參閱 Target 項目 (MSBuild)

.props

包含 Property Group 和使用者定義的 Property XML 項目 (Element),用來指定建置期間使用的檔案和參數設定。

也可能包含 Item Definition Group 和使用者定義的 Item XML 項目 (Element),用來指定其他設定。 項目 (Item) 定義群組中定義的項目 (Item) 類似於屬性,但無法由命令列存取。 Visual C++ 專案檔經常使用項目 (Item) 取代屬性,用以代表設定。

如需詳細資訊,請參閱 ItemGroup 項目 (MSBuild)ItemDefinitionGroup 項目 (MSBuild)Item 項目 (MSBuild)

.xml

包含 XML 項目 (Element),用來宣告和初始化 IDE 使用者介面項目,例如屬性工作表和屬性頁,以及文字方塊和清單方塊控制項。

.xml 檔案直接支援 IDE,而非 MSBuild。 不過,指派 IDE 屬性的值是要用來建置屬性和項目 (Item)。

大部分 .xml 檔案都位於地區設定專用子目錄, 例如,「英文-美國」地區的檔案位於 $(VCTargetsPath)\1033\。

使用者目標和屬性

若想以最有效率的方式在命令列中使用 MSBuild,建議您了解哪些屬性和目標有用且相關。 大部分屬性和目標都是協助實作 Visual C++ 建置系統,因此和使用者無關。 本節說明一些重要的使用者導向屬性和目標。

PlatformToolset 屬性

PlatformToolset 屬性決定組建中使用的是 Visual C++ 2010 還是 Visual C++ 2008 Toolset。 屬性的值與常值字串串連在一起形成目錄路徑,此目錄包含建置特定平台之專案所需的屬性和目標檔案。

PlatformToolset 屬性設為 v100 表示使用 Visual C++ 2010 工具來建置應用程式。

msbuild myProject.vcxproj /p:PlatformToolset=v100

PlatformToolset 屬性設為 v90 則表示使用 Visual C++ 2008 工具來建置應用程式。 您的電腦上必須已安裝 Visual C++ 2008 Toolset,此屬性才能生效。

msbuild myProject.vcxproj /p:PlatformToolset=v90

UseEnv 屬性

依預設,目前專案的特定平台設定會覆寫 PATH、INCLUDE、LIB、LIBPATH、CONFIGURATION 和 PLATFORM 環境變數。 將 UseEnv 屬性設為 true,可以確保環境變數不被覆寫。

msbuild myProject.vcxproj /p:UseEnv=true

目標

Visual C++ 支援檔案中有數百個目標, 不過大部分都是系統導向的目標,使用者可以忽略。 大部分系統目標的名稱會加上底線 (_) 前置字元,或以 "PrepareFor"、"Compute"、"Before"、"After"、"Pre" 或 "Post" 為開頭。

下表列出一些重要的使用者導向目標。

目標

說明

BscMake

執行 Microsoft Browse Information Maintenance Utility 工具 bscmake.exe。

Build

建置專案。

這是專案的預設目標。

ClCompile

執行 Visual C++ 編譯器工具 cl.exe。

Clean

刪除暫存和中繼組建檔案。

Lib

執行 Microsoft 32 位元 Library Manager 工具 lib.exe。

Link

執行 Visual C++ 連結器工具 link.exe。

ManifestResourceCompile

從資訊清單擷取資源清單,然後執行 Microsoft Windows 資源編譯器工具 rc.exe。

Midl

執行 Microsoft 介面定義語言 (MIDL) 編譯器工具 midl.exe。

Rebuild

清除然後建置您的專案。

ResourceCompile

執行 Microsoft Windows 資源編譯器工具工具 rc.exe。

XdcMake

執行 XML 文件工具 xdcmake.exe。

Xsd

執行 XML 結構描述定義工具 xsd.exe。

請參閱

其他資源

MSBuild (Visual C++)

變更記錄

日期

記錄

原因

2011 年 3 月

變更「支援檔案目錄」中的平台預留位置為包含 "x64" 而非 "x86"。

客戶回函。