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 PropertyGroup také prvky , , ItemGroup ItemDefinitionGroup a 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íší PATH
nastavení specifická pro platformu pro aktuální projekt proměnné , INCLUDE
, LIB
LIBPATH
, 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
, After
nebo Pre
Post
.
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.exe kompilá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.exe dokumentace 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