Delen via


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

  1. Maak een map voor uw project.

  2. 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;
    }
    
  3. 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

  1. Gebruik een teksteditor om een projectbestand met de naam myproject.vcxprojte maken en voeg vervolgens het hoofd-<Project> element toe dat hier wordt weergegeven. (Gebruik ToolsVersion="14.0" als u Visual Studio 2015 gebruikt, ToolsVersion="15.0" als u Visual Studio 2017 gebruikt of ToolsVersion="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.

  2. 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>
    
  3. Voeg een <Import>-element toe dat het pad aangeeft van de standaard-C++-instellingen voor dit project:

    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
    
  4. Voeg een eigenschapsgroepelement (<PropertyGroup>) toe waarmee twee projecteigenschappen worden opgegeven, <ConfigurationType> en <PlatformToolset>. (Gebruik v140 als de <PlatformToolset>-waarde als u Visual Studio 2015 gebruikt, v141 als u Visual Studio 2017 gebruikt, v142 als u Visual Studio 2019 of v143 gebruikt als u Visual Studio 2022 gebruikt.)

    <PropertyGroup>
      <ConfigurationType>Application</ConfigurationType>
      <PlatformToolset>v143</PlatformToolset>
    </PropertyGroup>
    
  5. Voeg een <Import>-element toe waarmee het pad van de huidige C++-instellingen voor dit project wordt opgegeven:

    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
    
  6. 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.

  7. 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>
    
  8. 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 myprojectop 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:

Zie ook