Sdílet prostřednictvím


Vnitřní fungování nástroje MSBuild pro projekty C++

Když nastavíte vlastnosti projektu v integrovaném vývojovém prostředí a pak projekt uložíte, Visual Studio zapíše nastavení projektu do souboru projektu. Soubor projektu obsahuje nastavení, která jsou jedinečná pro váš projekt. Neobsahuje ale všechna nastavení potřebná k sestavení projektu. Soubor projektu obsahuje Import prvky, které obsahují síť dalších podpůrných souborů. Soubory podpory obsahují zbývající vlastnosti, cíle a nastavení potřebné k sestavení projektu.

Většina cílů a vlastností v souborech podpory existuje výhradně k implementaci systému sestavení. Tento článek popisuje užitečné cíle a vlastnosti, které můžete zadat na příkazovém řádku MSBuild. Pokud chcete zjistit další cíle a vlastnosti, prozkoumejte soubory v adresářích souborů podpory.

Podpora adresářů souborů

Ve výchozím nastavení se primární podpůrné soubory sady Visual Studio nacházejí v následujících adresářích. Tyto informace jsou specifické pro verzi.

Visual Studio 2022 a 2019

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\

    Obsahuje primární cílové soubory (.targets) a soubory vlastností (.props), které jsou používány cíli. Ve výchozím nastavení $(VCTargetsPath) makro odkazuje na tento adresář. Zástupný <version> symbol odkazuje na verzi sady Visual Studio: v170 pro Visual Studio 2022, v160 pro Visual Studio 2019 nebo v150 pro Visual Studio 2017.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\

    Obsahuje soubory cílů a vlastností specifické pro platformu, které přepíší cíle a vlastnosti v nadřazeném adresáři. Tento adresář obsahuje také knihovnu DLL, která definuje úlohy, které jsou používány cíli v tomto adresáři. Zástupný <platform> symbol představuje podadresář ARM, ARM64, Win32 nebo x64.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    Obsahuje adresáře, které umožňují sestavení generovat aplikace jazyka C++ pomocí zadané <toolset>. Zástupný <platform> symbol představuje podadresář ARM, ARM64, Win32 nebo x64. Zástupný <toolset> symbol představuje podadresář sady nástrojů.

Visual Studio 2017

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\

    Obsahuje primární cílové soubory (.targets) a soubory vlastností (.props), které jsou používány cíli. Ve výchozím nastavení $(VCTargetsPath) makro odkazuje na tento adresář.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\

    Obsahuje soubory cílů a vlastností specifické pro platformu, které přepíší cíle a vlastnosti v nadřazeném adresáři. Tento adresář obsahuje také knihovnu DLL, která definuje úlohy, které jsou používány cíli v tomto adresáři. Zástupný <platform> symbol představuje podadresář ARM, ARM64, Win32 nebo x64.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\PlatformToolsets\<toolset>\

    Obsahuje adresáře, které umožňují sestavení generovat aplikace jazyka C++ pomocí zadané <toolset>. Zástupný <platform> symbol představuje podadresář ARM, Win32 nebo x64. Zástupný <toolset> symbol představuje podadresář sady nástrojů.

Visual Studio 2015 a starší

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\

    Obsahuje primární cílové soubory (.targets) a soubory vlastností (.props), které jsou používány cíli. Ve výchozím nastavení odkazuje makro $(VCTargetsPath) na tento adresář.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\

    Obsahuje soubory cílů a vlastností specifické pro platformu, které přepíší cíle a vlastnosti v nadřazeném adresáři. Tento adresář obsahuje také knihovnu DLL, která definuje úlohy, které jsou používány cíli v tomto adresáři. Zástupný <platform> symbol představuje podadresář ARM, Win32 nebo x64.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    Obsahuje adresáře, které umožňují sestavení generovat aplikace jazyka C++ pomocí zadané <toolset>. Zástupný <version> symbol je V110 pro Visual Studio 2012, V120 pro Visual Studio 2013 a V140 pro Visual Studio 2015. Zástupný <platform> symbol představuje podadresář ARM, Win32 nebo x64. Zástupný <toolset> symbol představuje podadresář sady nástrojů. Například se jedná o verzi 140 pro vytváření aplikací pro Windows pomocí sady nástrojů sady Visual Studio 2015. Nebo v120_xp sestavit pro Windows XP pomocí sady nástrojů sady Visual Studio 2013.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\Platforms\<platform>\PlatformToolsets\<toolset>\

    Cesty, které umožňují sestavení vygenerovat aplikace sady Visual Studio 2008 nebo Visual Studio 2010, nezahrnují <version>. V těchto verzích <platform> zástupný symbol představuje podadresář Itanium, Win32 nebo x64. Zástupný <toolset> symbol představuje podadresář sady nástrojů v90 nebo v100.

Soubory podpory

Adresáře souborů podpory obsahují soubory s těmito příponami:

Rozšíření Popis
.targets Obsahuje Target elementy XML, které určují úkoly, které jsou spouštěné cílem. Může obsahovat PropertyGrouptaké prvky , , ItemGroupItemDefinitionGroupa uživatelem definované Item prvky, které slouží k přiřazení souborů a možností příkazového řádku k parametrům úkolu.

Další informace naleznete v tématu Target Element (MSBuild).
.props Obsahuje Property Group a uživatelem definované Property elementy XML, které určují nastavení souboru a parametrů, které se používají během sestavení.

Může také obsahovat ItemDefinitionGroup a uživatelem definované Item elementy XML, které určují další nastavení. Položky definované ve skupině definic položek se podobají vlastnostem, ale z příkazového řádku se nedají získat přístup. Soubory projektu sady Visual Studio často používají položky místo vlastností k reprezentaci nastavení.

Další informace naleznete v tématu Element (MSBuild), ItemDefinitionGroup Element (MSBuild) a Item Element (MSBuild).ItemGroup
.xml Obsahuje elementy XML, které deklarují a inicializují prvky uživatelského rozhraní IDE. Například seznamy vlastností, stránky vlastností, ovládací prvky textového pole a ovládací prvky seznamu.

Soubory .xml přímo podporují integrované vývojové prostředí (IDE), nikoli MSBuild. Hodnoty vlastností integrovaného vývojového prostředí jsou však přiřazeny k vlastnostem sestavení a položkám.

Většina .xml souborů je v podadresáři specifické pro národní prostředí. Například soubory pro oblast Angličtina-USA jsou v $(VCTargetsPath)\1033\.

Cíle a vlastnosti uživatele

Chcete-li efektivně používat NÁSTROJ MSBuild, pomáhá zjistit, které vlastnosti a cíle jsou užitečné a relevantní. Většina vlastností a cílů pomáhá implementovat systém sestavení sady Visual Studio a není pro uživatele relevantní. Tato část popisuje uživatelsky orientované vlastnosti a cíle, o které stojí za to vědět.

PlatformToolset vlastnost

Vlastnost PlatformToolset určuje, která sada nástrojů MSVC se používá v sestavení. Ve výchozím nastavení se používá aktuální sada nástrojů. Pokud je tato vlastnost nastavena, její hodnota se zřetězení s literálovými řetězci vytvoří cestu. Je to adresář, který obsahuje vlastnost a cílové soubory potřebné k sestavení projektu pro konkrétní platformu. Sada nástrojů platformy musí být nainstalovaná k sestavení pomocí této verze sady nástrojů platformy.

Například nastavte PlatformToolset vlastnost tak, aby v140 k sestavení aplikace používala nástroje a knihovny sady Visual Studio 2015:

msbuild myProject.vcxproj /p:PlatformToolset=v140

PreferredToolArchitecture vlastnost

Vlastnost PreferredToolArchitecture určuje, zda se v sestavení používají 32bitové nebo 64bitové kompilátory a nástroje. Tato vlastnost nemá vliv na architekturu ani konfiguraci výstupní platformy. Ve výchozím nastavení nástroj MSBuild používá verzi kompilátoru a nástrojů x86, pokud tato vlastnost není nastavena.

Například nastavte PreferredToolArchitecture vlastnost na x64 použití 64bitového kompilátoru a nástrojů k sestavení aplikace:

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

UseEnv vlastnost

Ve výchozím nastavení přepíší PATHnastavení specifická pro platformu pro aktuální projekt proměnné , INCLUDE, LIBLIBPATH, CONFIGURATION, a PLATFORM prostředí. UseEnv Nastavte vlastnost tak, aby true se zajistilo, že proměnné prostředí nebudou přepsány.

msbuild myProject.vcxproj /p:UseEnv=true

Cíle

V souborech podpory sady Visual Studio jsou stovky cílů. Většina je ale cíle orientovaných na systém, které může uživatel ignorovat. Většina systémových cílů má předponu podtržítka (_) nebo má název začínající znakem PrepareFor, , Compute, Before, Afternebo PrePost.

Následující tabulka uvádí několik užitečných uživatelsky orientovaných cílů.

Cíl Popis
BscMake Spustí nástroj Microsoft Browse Information Maintenance Utility , bscmake.exe.
Build Vytvoří projekt.

Tento cíl je výchozí pro projekt.
ClCompile Spustí nástroj kompilátoru MSVC . cl.exe
Clean Odstraní dočasné a přechodné soubory sestavení.
Lib Spustí nástroj Microsoft 32-Bit Library Manager , lib.exe.
Link Spustí nástroj linkeru MSVC . link.exe
ManifestResourceCompile Extrahuje seznam prostředků z manifestu a potom spustí nástroj Microsoft Windows Resource Compiler , rc.exe.
Midl Spustí nástroj midl.exekompilátoru MIDL (Microsoft Interface Definition Language) .
Rebuild Vyčistí a pak sestaví váš projekt.
ResourceCompile Spustí nástroj Microsoft Windows Resource Compiler , rc.exe.
XdcMake Spustí nástroj xdcmake.exedokumentace XML .
Xsd Spustí nástroj definice schématu XML . xsd.exe Viz poznámka.

Poznámka:

V sadě Visual Studio 2017 a novějších je podpora projektu C++ pro .xsd soubory zastaralá. Stále můžete použít Microsoft.VisualC.CppCodeProvider přidáním CppCodeProvider.dll ručně do GAC.

Viz také

Referenční dokumentace úlohy MSBuild
BscMake úkol
CL úkol
CPPClean úkol
LIB úkol
Link úkol
MIDL úkol
MT úkol
RC úkol
SetEnv úkol
VCMessage úkol
XDCMake úkol