Walkthrough: MSBuild gebruiken om een Visual C++-project te maken
In dit scenario ziet u hoe u MSBuild gebruikt in een opdrachtprompt om een Visual Studio C++-project te bouwen. U leert hoe u een op XML gebaseerde .vcxproj
projectbestand maakt voor een Visual C++-consoletoepassing. Nadat u het project hebt gebouwd, leert u hoe u het buildproces aanpast.
Belangrijk
Gebruik deze methode niet als u het projectbestand later wilt bewerken met behulp van de Visual Studio IDE. Als u handmatig een .vcxproj
-bestand maakt, kan visual Studio IDE het mogelijk niet bewerken of laden, met name als het project jokertekens gebruikt in projectitems. Zie .vcxproj
en .props
bestandsstructuur en .vcxproj
bestanden en jokertekensvoor meer informatie.
In dit stappenplan worden de volgende taken geïllustreerd:
- De C++-bronbestanden voor uw project maken.
- Het XML MSBuild-projectbestand maken.
- MsBuild gebruiken om uw project te bouwen.
- MsBuild gebruiken om uw project aan te passen.
Voorwaarden
Je hebt deze vereisten nodig om dit stappenplan te voltooien:
- Een kopie van Visual Studio met de Desktop-ontwikkeling met C++ workload geïnstalleerd.
- Een algemeen begrip van het MSBuild-systeem.
Notitie
De meeste build-instructies op laag niveau bevinden zich in de bestanden .targets
en .props
, die zijn gedefinieerd in de standaard doelmap en zijn opgeslagen bij de eigenschap $(VCTargetsPath)
. Hier vindt u bestanden zoals Microsoft.Cpp.Common.props
. Het standaardpad voor deze bestanden in Visual Studio 2015 en eerdere versies valt onder %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\
.
Notitie
De meeste build-instructies op laag niveau bevinden zich in de .targets
- en .props
-bestanden die zijn gedefinieerd onder de standaard doelmap, opgeslagen in de eigenschap $(VCTargetsPath)
. Hier vindt u bestanden zoals Microsoft.Cpp.Common.props
. Het standaardpad voor deze bestanden in Visual Studio 2017 valt onder %VSINSTALLDIR%Common7\IDE\VC\VCTargets\
. Visual Studio 2015 en eerdere versies sla(ten) dingen op onder %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\
.
Notitie
De meeste build-instructies op laag niveau bevinden zich in de .targets
- en .props
-bestanden die zijn gedefinieerd onder de standaarddoelmap, opgeslagen in eigenschap $(VCTargetsPath)
. Hier vindt u bestanden zoals Microsoft.Cpp.Common.props
. Het standaardpad voor deze bestanden bevindt zich onder %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\
. Het <version>
padelement is specifiek voor de versie van Visual Studio. Het is v160
voor Visual Studio 2019. Visual Studio 2017 heeft deze bestanden opgeslagen onder %VSINSTALLDIR%Common7\IDE\VC\VCTargets\
. Visual Studio 2015 en eerdere versies hebben ze opgeslagen onder %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\
.
De C++-bronbestanden maken
In deze procedure maakt u een project met een bronbestand en een headerbestand. Het bronbestand main.cpp
bevat de main
functie voor de consoletoepassing. Het headerbestand main.h
bevat code om het <iostream>
headerbestand op te nemen. U kunt deze C++-bestanden maken met behulp van Visual Studio of een teksteditor zoals Visual Studio Code.
De C++-bronbestanden voor uw project maken
Maak een map voor uw project.
Maak een bestand met de naam
main.cpp
en voeg deze code toe aan het bestand:// main.cpp : the application source code. #include <iostream> #include "main.h" int main() { std::cout << "Hello, from MSBuild!\n"; return 0; }
Maak een bestand met de naam
main.h
en voeg deze code toe aan het bestand:// main.h: the application header code. /* Additional source code to include. */
Het XML MSBuild-projectbestand maken
Een MSBuild-projectbestand is een XML-bestand dat een projecthoofdelement (<Project>
) bevat. In het voorbeeldproject dat u gaat bouwen, bevat het element <Project>
zeven onderliggende elementen:
- Drie itemgroeptags (
<ItemGroup>
) die projectconfiguratie en -platform, bronbestandsnaam en headerbestandsnaam opgeven. - Drie importtags (
<Import>
) die de locatie van Microsoft Visual C++-instellingen opgeven. - Een eigenschapsgroeptag (
<PropertyGroup>
) die projectinstellingen aangeeft.
Het MSBuild-projectbestand maken
Gebruik een teksteditor om een projectbestand met de naam
myproject.vcxproj
te maken en voeg vervolgens het hoofd-<Project>
element toe dat hier wordt weergegeven. (GebruikToolsVersion="14.0"
als u Visual Studio 2015 gebruikt,ToolsVersion="15.0"
als u Visual Studio 2017 gebruikt ofToolsVersion="16.0"
als u Visual Studio 2019 gebruikt.)<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> </Project>
Voeg de elementen in de volgende procedurestappen in tussen de hoofd-
<Project>
tags.Voeg deze twee
<ProjectConfiguration>
-kindelementen toe aan een<ItemGroup>
-element. Het onderliggende element bevat foutopsporings- en releaseconfiguraties voor een 32-bits Windows-besturingssysteem:<ItemGroup> <ProjectConfiguration Include="Debug|Win32"> <Configuration>Debug</Configuration> <Platform>Win32</Platform> </ProjectConfiguration> <ProjectConfiguration Include="Release|Win32"> <Configuration>Release</Configuration> <Platform>Win32</Platform> </ProjectConfiguration> </ItemGroup>
Voeg een
<Import>
-element toe dat het pad aangeeft van de standaard-C++-instellingen voor dit project:<Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
Voeg een eigenschapsgroepelement (
<PropertyGroup>
) toe waarmee twee projecteigenschappen worden opgegeven,<ConfigurationType>
en<PlatformToolset>
. (Gebruikv140
als de<PlatformToolset>
-waarde als u Visual Studio 2015 gebruikt,v141
als u Visual Studio 2017 gebruikt,v142
als u Visual Studio 2019 ofv143
gebruikt als u Visual Studio 2022 gebruikt.)<PropertyGroup> <ConfigurationType>Application</ConfigurationType> <PlatformToolset>v143</PlatformToolset> </PropertyGroup>
Voeg een
<Import>
-element toe waarmee het pad van de huidige C++-instellingen voor dit project wordt opgegeven:<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
Voeg een
<ClCompile>
onderliggend element toe aan een<ItemGroup>
-element. Het onderliggende element geeft de naam van het C/C++-bronbestand op dat moet worden gecompileerd:<ItemGroup> <ClCompile Include="main.cpp" /> </ItemGroup>
Notitie
<ClCompile>
is een builddoel en wordt gedefinieerd in de map met standaarddoelen.Voeg een
<ClInclude>
onderliggend element toe aan een<ItemGroup>
-element. Het onderliggende element geeft de naam van het headerbestand voor het C/C++-bronbestand op:<ItemGroup> <ClInclude Include="main.h" /> </ItemGroup>
Voeg een
<Import>
-element toe dat het pad opgeeft van het bestand dat het doel voor dit project definieert:<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" />
Projectbestand voltooien
Deze code toont het volledige projectbestand dat u in de vorige procedure hebt gemaakt. (Gebruik ToolsVersion="15.0"
voor Visual Studio 2017 of ToolsVersion="14.0"
voor Visual Studio 2015.)
<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
<PropertyGroup>
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ItemGroup>
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="main.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" />
</Project>
MSBuild gebruiken om uw project te bouwen
Voer deze opdracht in bij de opdrachtprompt om uw consoletoepassing te bouwen:
msbuild myproject.vcxproj /p:configuration=debug
MSBuild maakt een map voor de uitvoerbestanden en compileert en koppelt uw project vervolgens om het Myproject.exe
programma te genereren. Nadat het buildproces is voltooid, gebruikt u deze opdracht om de toepassing uit te voeren vanuit de map voor foutopsporing:
myproject
In de toepassing moet 'Hello, from MSBuild!' worden weergegeven in het consolevenster.
Uw project aanpassen
MET MSBuild kunt u vooraf gedefinieerde builddoelen uitvoeren, door de gebruiker gedefinieerde eigenschappen toepassen en aangepaste hulpprogramma's, gebeurtenissen en buildstappen gebruiken. In deze sectie ziet u de volgende taken:
- MSBuild gebruiken met buildtargets.
- MSBuild gebruiken met build-eigenschappen.
- MSBuild gebruiken met de 64-bits compiler en hulpprogramma's.
- MSBuild gebruiken met verschillende toolsets.
- MSBuild-aanpassingen toevoegen.
MSBuild gebruiken met builddoelen
Een builddoel is een benoemde set vooraf gedefinieerde of door de gebruiker gedefinieerde opdrachten die kunnen worden uitgevoerd tijdens de build. Gebruik de opdrachtregeloptie doel (/t
) om een builddoel op te geven. Voor het myproject
voorbeeldproject worden met het vooraf gedefinieerde clean
doel alle bestanden in de map voor foutopsporing verwijderd en wordt er een nieuw logboekbestand gemaakt.
Voer bij de opdrachtprompt deze opdracht in om myproject
op te schonen:
msbuild myproject.vcxproj /t:clean
Het gebruik van MSBuild met buildeigenschappen
Met de opdrachtregeloptie voor de eigenschap (/p
) kunt u een eigenschap in het project-buildbestand overschrijven. In het myproject
voorbeeldproject wordt de buildconfiguratie voor release of foutopsporing opgegeven door de eigenschap Configuration
. Het besturingssysteem dat u gebruikt om de ingebouwde toepassing uit te voeren, wordt opgegeven door de eigenschap Platform
.
Voer bij de opdrachtprompt deze opdracht in om een foutopsporingsbuild te maken van de myproject
-toepassing die moet worden uitgevoerd in 32-bits Windows:
msbuild myproject.vcxproj /p:configuration=debug /p:platform=win32
Stel dat het myproject
voorbeeldproject ook een configuratie definieert voor 64-bits Windows en een andere configuratie voor een aangepast besturingssysteem met de naam myplatform
.
Voer bij de opdrachtprompt deze opdracht in om een release-build te maken die wordt uitgevoerd op 64-bits Windows:
msbuild myproject.vcxproj /p:configuration=release /p:platform=x64
Voer bij de opdrachtprompt deze opdracht in om een release-build te maken voor myplatform
:
msbuild myproject.vcxproj /p:configuration=release /p:platform=myplatform
MSBuild gebruiken met de 64-bits compiler en hulpprogramma's
Als u Visual Studio hebt geïnstalleerd op 64-bits Windows, worden de 64-bits x64-systeemeigen en crosshulpprogramma's standaard geïnstalleerd. U kunt MSBuild configureren voor het gebruik van de 64-bits compiler en hulpprogramma's om uw toepassing te bouwen door de eigenschap PreferredToolArchitecture
in te stellen. Deze eigenschap heeft geen invloed op de projectconfiguratie of platformeigenschappen. Standaard wordt de 32-bits versie van de hulpprogramma's gebruikt. Als u de 64-bits versie van de compiler en hulpprogramma's wilt opgeven, voegt u dit eigenschapsgroepelement toe aan het Myproject.vcxproj
projectbestand na het Microsoft.Cpp.default.props
bestand <Import />
element:
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
Voer bij de opdrachtprompt deze opdracht in om de 64-bits hulpprogramma's te gebruiken om uw toepassing te bouwen:
msbuild myproject.vcxproj /p:PreferredToolArchitecture=x64
MSBuild gebruiken met een andere toolset
Als u de hulpprogramma's en bibliotheken voor andere versies van Visual C++ hebt geïnstalleerd, kan MSBuild toepassingen bouwen voor de huidige Versie van Visual C++ of voor de andere geïnstalleerde versies. Als u bijvoorbeeld Visual Studio 2012 hebt geïnstalleerd, kunt u de toolset Visual C++ 11.0 voor Windows XP opgeven door dit eigenschapsgroepelement toe te voegen aan het Myproject.vcxproj
projectbestand na het Microsoft.Cpp.props
-bestand <Import />
element:
<PropertyGroup>
<PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup>
Als u uw project opnieuw wilt bouwen met de visual C++ 11.0 Windows XP-toolset, voert u deze opdracht in:
msbuild myproject.vcxproj /p:PlatformToolset=v110_xp /t:rebuild
MSBuild-aanpassingen toevoegen
MSBuild biedt verschillende manieren om uw buildproces aan te passen. Deze artikelen laten zien hoe u aangepaste buildstappen, hulpprogramma's en gebeurtenissen toevoegt aan uw MSBuild-project:
- Hoe een aangepaste buildstap toe te voegen aan MSBuild-projecten
- Procedure: Aangepaste buildhulpprogramma's toevoegen aan MSBuild Projects
- Procedure: Build-gebeurtenissen gebruiken in MSBuild Projects