Delen via


MSBuild internals voor C++-projecten

Wanneer u projecteigenschappen instelt in de IDE en vervolgens het project opslaat, schrijft Visual Studio de projectinstellingen naar uw projectbestand. Het projectbestand bevat instellingen die uniek zijn voor uw project. Het bevat echter niet alle instellingen die nodig zijn om uw project te bouwen. Het projectbestand bevat Import elementen die een netwerk met aanvullende ondersteuningsbestanden bevatten. De ondersteuningsbestanden bevatten de resterende eigenschappen, doelen en instellingen die nodig zijn om het project te bouwen.

De meeste doelen en eigenschappen in de ondersteuningsbestanden bestaan alleen om het buildsysteem te implementeren. In dit artikel worden nuttige doelen en eigenschappen besproken die u kunt opgeven op de MSBuild-opdrachtregel. Als u meer doelen en eigenschappen wilt ontdekken, verkent u de bestanden in de mappen met ondersteuningsbestanden.

Ondersteuningsbestandsmappen

Standaard bevinden de primaire Visual Studio-ondersteuningsbestanden zich in de volgende mappen. Deze informatie is versiespecifiek.

Visual Studio 2022 en 2019

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

    Bevat de primaire doelbestanden (.targets) en eigenschapsbestanden (.props) die door de doelen worden gebruikt. De macro verwijst standaard $(VCTargetsPath) naar deze map. De <version> tijdelijke aanduiding verwijst naar de Visual Studio-versie: v170 voor Visual Studio 2022, v160 voor Visual Studio 2019 of v150 voor Visual Studio 2017.

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

    Bevat platformspecifieke doel- en eigenschapsbestanden die doelen en eigenschappen overschrijven in de bovenliggende map. Deze map bevat ook een DLL waarmee de taken worden gedefinieerd die door de doelen in deze map worden gebruikt. De <platform> tijdelijke aanduiding vertegenwoordigt de submap ARM, ARM64, Win32 of x64.

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

    Bevat de mappen waarmee de build C++-toepassingen kan genereren met behulp van de opgegeven <toolset>. De <platform> tijdelijke aanduiding vertegenwoordigt de submap ARM, ARM64, Win32 of x64. De <toolset> tijdelijke aanduiding vertegenwoordigt de submap van de toolset.

Visual Studio 2017

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

    Bevat de primaire doelbestanden (.targets) en eigenschapsbestanden (.props) die door de doelen worden gebruikt. De macro verwijst standaard $(VCTargetsPath) naar deze map.

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

    Bevat platformspecifieke doel- en eigenschapsbestanden die doelen en eigenschappen overschrijven in de bovenliggende map. Deze map bevat ook een DLL waarmee de taken worden gedefinieerd die door de doelen in deze map worden gebruikt. De <platform> tijdelijke aanduiding vertegenwoordigt de submap ARM, ARM64, Win32 of x64.

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

    Bevat de mappen waarmee de build C++-toepassingen kan genereren met behulp van de opgegeven <toolset>. De <platform> tijdelijke aanduiding vertegenwoordigt de submap ARM, Win32 of x64. De <toolset> tijdelijke aanduiding vertegenwoordigt de submap van de toolset.

Visual Studio 2015 en eerder

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

    Bevat de primaire doelbestanden (.targets) en eigenschapsbestanden (.props) die door de doelen worden gebruikt. Standaard verwijst de macro $(VCTargetsPath) naar deze map.

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

    Bevat platformspecifieke doel- en eigenschapsbestanden die doelen en eigenschappen overschrijven in de bovenliggende map. Deze map bevat ook een DLL waarmee de taken worden gedefinieerd die door de doelen in deze map worden gebruikt. De <platform> tijdelijke aanduiding vertegenwoordigt de submap ARM, Win32 of x64.

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

    Bevat de mappen waarmee de build C++-toepassingen kan genereren met behulp van de opgegeven <toolset>. De <version> tijdelijke aanduiding is V110 voor Visual Studio 2012, V120 voor Visual Studio 2013 en V140 voor Visual Studio 2015. De <platform> tijdelijke aanduiding vertegenwoordigt de submap ARM, Win32 of x64. De <toolset> tijdelijke aanduiding vertegenwoordigt de submap van de toolset. Het is bijvoorbeeld v140 voor het bouwen van Windows-apps met behulp van de Visual Studio 2015-toolset. Of v120_xp om te bouwen voor Windows XP met behulp van de Visual Studio 2013-toolset.

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

    De paden waarmee de build Visual Studio 2008- of Visual Studio 2010-toepassingen kan genereren, bevatten niet de <version>. In deze versies vertegenwoordigt de <platform> tijdelijke aanduiding de Submap Itanium, Win32 of x64. De <toolset> tijdelijke aanduiding vertegenwoordigt de submap v90 of v100 toolset.

Ondersteuningsbestanden

De mappen met ondersteuningsbestanden bevatten bestanden met deze extensies:

Extension Description
.targets Bevat Target XML-elementen die de taken opgeven die door het doel worden uitgevoerd. Kan ook elementen bevatten PropertyGroup, ItemGroupen ItemDefinitionGroupdoor de gebruiker gedefinieerde Item elementen die worden gebruikt om bestanden en opdrachtregelopties toe te wijzen aan taakparameters.

Zie Target Element (MSBuild) voor meer informatie.
.props Bevat Property Group en door de gebruiker gedefinieerde Property XML-elementen die bestand- en parameterinstellingen opgeven die tijdens een build worden gebruikt.

Kan ook XML-elementen bevatten ItemDefinitionGroup die door de gebruiker zijn gedefinieerd Item en die aanvullende instellingen opgeven. Items die zijn gedefinieerd in een itemdefinitiegroep lijken op eigenschappen, maar kunnen niet worden geopend vanaf de opdrachtregel. Visual Studio-projectbestanden gebruiken vaak items in plaats van eigenschappen om instellingen weer te geven.

Zie ItemGroup Element (MSBuild), ItemDefinitionGroup Element (MSBuild) en Element (MSBuild) voorItem meer informatie.
.xml Bevat XML-elementen die IDE-gebruikersinterface-elementen declareren en initialiseren. Bijvoorbeeld eigenschappenvensters, eigenschappenpagina's, besturingselementen voor tekstvaken en keuzelijstbesturingselementen.

De .xml bestanden ondersteunen de IDE rechtstreeks, niet MSBuild. De waarden van IDE-eigenschappen worden echter toegewezen aan build-eigenschappen en -items.

De meeste .xml bestanden bevinden zich in een submap die specifiek is voor landinstellingen. Bestanden voor de English-US regio bevinden zich bijvoorbeeld in $(VCTargetsPath)\1033\.

Gebruikersdoelen en -eigenschappen

Om MSBuild effectief te gebruiken, helpt het om te weten welke eigenschappen en doelen nuttig en relevant zijn. De meeste eigenschappen en doelen helpen bij het implementeren van het Visual Studio-buildsysteem en zijn niet relevant voor de gebruiker. In deze sectie worden gebruikersgeoriënteerde eigenschappen en doelen beschreven waarover u meer wilt weten.

eigenschap PlatformToolset

De PlatformToolset eigenschap bepaalt welke microsoft C++ (MSVC)-toolset wordt gebruikt in de build. Standaard wordt de huidige toolset gebruikt. Wanneer deze eigenschap is ingesteld, wordt de waarde samengevoegd met letterlijke tekenreeksen om het pad te vormen. Dit is de map die de eigenschap en doelbestanden bevat die nodig zijn om een project voor een bepaald platform te bouwen. De platformhulpprogrammaset moet worden geïnstalleerd om te bouwen met behulp van die platformhulpprogrammasetversie.

Stel bijvoorbeeld de PlatformToolset eigenschap in om v140 Visual Studio 2015-hulpprogramma's en -bibliotheken te gebruiken om uw toepassing te bouwen:

msbuild myProject.vcxproj /p:PlatformToolset=v140

eigenschap PreferredToolArchitecture

De PreferredToolArchitecture eigenschap bepaalt of de 32-bits of 64-bits compiler en hulpprogramma's worden gebruikt in de build. Deze eigenschap heeft geen invloed op de architectuur of configuratie van het uitvoerplatform. MSBuild gebruikt standaard de x86-versie van de compiler en hulpprogramma's als deze eigenschap niet is ingesteld.

Stel bijvoorbeeld de PreferredToolArchitecture eigenschap in op x64 het gebruik van de 64-bits compiler en hulpprogramma's om uw toepassing te bouwen:

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

eigenschap UseEnv

Standaard overschrijven de platformspecifieke instellingen voor het huidige project de PATHomgevingsvariabelen , LIBPATHCONFIGURATIONINCLUDELIBen PLATFORM omgevingsvariabelen. Stel de UseEnv eigenschap zo true in dat de omgevingsvariabelen niet worden overschreven.

msbuild myProject.vcxproj /p:UseEnv=true

Targets

Er zijn honderden doelen in de Visual Studio-ondersteuningsbestanden. De meeste zijn echter systeemgerichte doelen die de gebruiker kan negeren. De meeste systeemdoelen worden voorafgegaan door een onderstrepingsteken (_) of hebben een naam die begint met PrepareFor, Compute, Before, , After, of PrePost.

De volgende tabel bevat verschillende nuttige, gebruikersgerichte doelen.

Target Description
BscMake Hiermee voert u het hulpprogramma Microsoft Browse Information Maintenance Utility uit. bscmake.exe
Build Hiermee wordt het project gebouwd.

Dit doel is de standaardinstelling voor een project.
ClCompile Hiermee wordt het msVC-compilerprogramma uitgevoerd. cl.exe
Clean Hiermee verwijdert u tijdelijke en tussenliggende buildbestanden.
Lib Hiermee wordt het microsoft 32-bits hulpprogramma Bibliotheekbeheer uitgevoerd. lib.exe
Link Hiermee wordt het hulpprogramma MSVC-linker uitgevoerd. link.exe
ManifestResourceCompile Extraheert een lijst met resources uit een manifest en voert vervolgens het hulpprogramma Microsoft Windows Resource Compiler uit. rc.exe
Midl Hiermee wordt het hulpprogramma voor de Microsoft Interface Definition Language (MIDL)-compiler uitgevoerd. midl.exe
Rebuild Schoont het project op en bouwt het vervolgens.
ResourceCompile Hiermee wordt het hulpprogramma Microsoft Windows Resource Compiler uitgevoerd. rc.exe
XdcMake Hiermee wordt het hulpprogramma XML-documentatie uitgevoerd. xdcmake.exe
Xsd Hiermee wordt het hulpprogramma XML-schemadefinitie uitgevoerd. xsd.exe Zie opmerking.

Opmerking

In Visual Studio 2017 en hoger wordt C++-projectondersteuning voor .xsd bestanden afgeschaft. U kunt dit nog steeds gebruiken Microsoft.VisualC.CppCodeProvider door handmatig toe te voegen CppCodeProvider.dll aan de GAC.

Zie ook

MSBuild-taakreferentie
BscMake taak
CL taak
CPPClean taak
LIB taak
Link taak
MIDL taak
MT taak
RC taak
SetEnv taak
VCMessage taak
XDCMake taak