Dela via


Genomgång: Använda MSBuild för att skapa ett Visuellt C++-projekt

Den här genomgången visar hur du använder MSBuild i en kommandotolk för att skapa ett Visual Studio C++-projekt. Du får lära dig hur du skapar en XML-baserad .vcxproj projektfil för ett Visual C++-konsolprogram. När du har skapat projektet får du lära dig hur du anpassar byggprocessen.

Viktig

Använd inte den här metoden om du tänker redigera projektfilen senare med hjälp av Visual Studio IDE. Om du skapar en .vcxproj fil manuellt kanske Visual Studio IDE inte kan redigera eller läsa in den, särskilt om projektet använder jokertecken i projektobjekt. Mer information finns i .vcxproj och .props filstrukturer, och .vcxproj filer samt jokertecken.

Den här genomgången illustrerar följande uppgifter:

  • Skapa C++-källfilerna för projektet.
  • Skapa XML MSBuild-projektfilen.
  • Använda MSBuild för att skapa projektet.
  • Använda MSBuild för att anpassa projektet.

Förutsättningar

Du behöver dessa förutsättningar för att slutföra den här genomgången:

  • En kopia av Visual Studio med Desktop-utveckling med C++ verktygspaket installerad.
  • En allmän förståelse för MSBuild-systemet.

Anteckning

De flesta kompileringsinstruktioner på låg nivå finns i .targets och .props filer som definieras under standardmålmappen som lagras i egenskapen $(VCTargetsPath). Det är där du hittar filer som Microsoft.Cpp.Common.props. Standardsökvägen för dessa filer i Visual Studio 2015 och tidigare versioner finns under %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\.

Not

De flesta kompileringsinstruktioner på låg nivå finns i .targets och .props filer som definieras under standardmålmappen som lagras i egenskapen $(VCTargetsPath). Det är där du hittar filer som Microsoft.Cpp.Common.props. Standardsökvägen för dessa filer i Visual Studio 2017 är under %VSINSTALLDIR%Common7\IDE\VC\VCTargets\. Visual Studio 2015 och tidigare versioner lagrade dem under %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\.

Anteckning

De flesta kompileringsinstruktioner på låg nivå finns i .targets och .props filer som definieras under standardmålmappen som lagras i egenskapen $(VCTargetsPath). Det är där du hittar filer som Microsoft.Cpp.Common.props. Standardsökvägen för dessa filer finns under %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\. Det <version> sökvägselementet är specifikt för versionen av Visual Studio. Det är v160 för Visual Studio 2019. Visual Studio 2017 lagrade dessa filer under %VSINSTALLDIR%Common7\IDE\VC\VCTargets\. Visual Studio 2015 och tidigare versioner lagrade dem under %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\.

Skapa C++-källfilerna

I den här genomgången skapar du ett projekt som har en källfil och en rubrikfil. Källfilen main.cpp innehåller funktionen main för konsolprogrammet. Rubrikfilen main.h innehåller kod som innehåller <iostream>-huvudfilen. Du kan skapa dessa C++-filer med hjälp av Visual Studio eller en textredigerare som Visual Studio Code.

Så här skapar du C++-källfilerna för projektet

  1. Skapa en mapp för projektet.

  2. Skapa en fil med namnet main.cpp och lägg till den här koden i filen:

    // main.cpp : the application source code.
    #include <iostream>
    #include "main.h"
    int main()
    {
       std::cout << "Hello, from MSBuild!\n";
       return 0;
    }
    
  3. Skapa en fil med namnet main.h och lägg till den här koden i filen:

    // main.h: the application header code.
    /* Additional source code to include. */
    

Skapa XML MSBuild-projektfilen

En MSBuild-projektfil är en XML-fil som innehåller ett projektrotelement (<Project>). I det exempelprojekt som du skapar innehåller elementet <Project> sju underordnade element:

  • Tre objektgrupptaggar (<ItemGroup>) som anger projektkonfiguration och plattform, källfilnamn och rubrikfilnamn.
  • Tre importtaggar (<Import>) som anger platsen för Microsoft Visual C++-inställningar.
  • En egenskapsgruppstagg (<PropertyGroup>) som anger projektinställningar.

Skapa MSBuild-projektfilen

  1. Använd en textredigerare för att skapa en projektfil med namnet myproject.vcxprojoch lägg sedan till rotelementet <Project> som visas här. (Använd ToolsVersion="14.0" om du använder Visual Studio 2015 ToolsVersion="15.0" om du använder Visual Studio 2017 eller ToolsVersion="16.0" om du använder Visual Studio 2019.)

    <Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    </Project>
    

    Infoga elementen i nästa procedursteg mellan rot- <Project>-taggarna.

  2. Lägg till dessa två <ProjectConfiguration>-underordnade element i ett <ItemGroup>-element. Det underordnade elementet anger felsöknings- och versionskonfigurationer för ett 32-bitars Windows-operativsystem:

    <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. Lägg till ett <Import> element som anger sökvägen till C++-standardinställningarna för det här projektet:

    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
    
  4. Lägg till ett egenskapsgruppelement (<PropertyGroup>) som anger två projektegenskaper, <ConfigurationType> och <PlatformToolset>. (Använd v140 som <PlatformToolset> värde om du använder Visual Studio 2015, v141 om du använder Visual Studio 2017 v142 om du använder Visual Studio 2019 eller v143 om du använder Visual Studio 2022.)

    <PropertyGroup>
      <ConfigurationType>Application</ConfigurationType>
      <PlatformToolset>v143</PlatformToolset>
    </PropertyGroup>
    
  5. Lägg till ett <Import> element som anger sökvägen till de aktuella C++-inställningarna för det här projektet:

    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
    
  6. Lägg till ett <ClCompile> barn-element i ett <ItemGroup>-element. Det underordnade elementet anger namnet på C/C++-källfilen som ska kompileras:

    <ItemGroup>
      <ClCompile Include="main.cpp" />
    </ItemGroup>
    

    Not

    <ClCompile> är ett kompileringsmål och definieras i standardmålmappen.

  7. Lägg till ett <ClInclude>-underordnat element i ett <ItemGroup>-element. Det underordnade elementet anger namnet på huvudfilen för C/C++-källfilen:

    <ItemGroup>
      <ClInclude Include="main.h" />
    </ItemGroup>
    
  8. Lägg till ett <Import>-element som anger sökvägen till filen som definierar målet för det här projektet:

    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" />
    

Slutför projektfil

Den här koden visar den fullständiga projektfilen som du skapade i föregående procedur. (Använd ToolsVersion="15.0" för Visual Studio 2017 eller ToolsVersion="14.0" för 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>

Använda MSBuild för att skapa ditt projekt

Ange det här kommandot i kommandotolken för att skapa konsolprogrammet:

msbuild myproject.vcxproj /p:configuration=debug

MSBuild skapar en mapp för utdatafilerna och kompilerar och länkar sedan projektet för att generera Myproject.exe programmet. När byggprocessen är klar använder du det här kommandot för att köra programmet från felsökningsmappen:

myproject

Programmet bör visa "Hello, from MSBuild!" i konsolfönstret.

Anpassa projektet

MED MSBuild kan du köra fördefinierade byggmål, tillämpa användardefinierade egenskaper och använda anpassade verktyg, händelser och byggsteg. Det här avsnittet visar följande uppgifter:

  • Använda MSBuild med byggmål.
  • Använda MSBuild med byggegenskaper.
  • Använda MSBuild med 64-bitars kompilatorn och verktygen.
  • Använda MSBuild med olika verktygsuppsättningar.
  • Lägga till MSBuild-anpassningar.

Att använda MSBuild med build-mål

Ett byggmål är en namngiven uppsättning fördefinierade eller användardefinierade kommandon som kan köras under bygget. Använd kommandoradsalternativet mål (/t) för att ange ett byggmål. För myproject exempelprojektet tar det fördefinierade clean målet bort alla filer i felsökningsmappen och skapar en ny loggfil.

I kommandotolken anger du det här kommandot för att rensa myproject:

msbuild myproject.vcxproj /t:clean

Använda MSBuild med byggegenskaper

Med kommandoradsalternativet för egenskapen (/p) kan du åsidosätta en egenskap i din projektversionsfil. I myproject exempelprojektet anges versions- eller felsökningsversionskonfigurationen av egenskapen Configuration. Det operativsystem som du ska använda för att köra det byggda programmet anges av egenskapen Platform.

I kommandotolken anger du det här kommandot för att skapa en felsökningsversion av myproject-programmet som ska köras i 32-bitars Windows:

msbuild myproject.vcxproj /p:configuration=debug /p:platform=win32

Anta att myproject exempelprojektet också definierar en konfiguration för 64-bitars Windows och en annan konfiguration för ett anpassat operativsystem med namnet myplatform.

I kommandotolken anger du det här kommandot för att skapa en releasebuild som körs på 64-bitarsversionen av Windows.

msbuild myproject.vcxproj /p:configuration=release /p:platform=x64

I kommandotolken anger du det här kommandot för att skapa en versionsversion för myplatform:

msbuild myproject.vcxproj /p:configuration=release /p:platform=myplatform

Använda MSBuild med 64-bitars kompilatorn och verktygen

Om du har installerat Visual Studio på 64-bitars Windows installeras 64-bitars x64-inbyggda verktyg och korsverktyg som standard. Du kan konfigurera MSBuild att använda 64-bitars kompilatorn och verktygen för att skapa ditt program genom att ange egenskapen PreferredToolArchitecture. Den här egenskapen påverkar inte projektkonfigurationen eller plattformsegenskaperna. Som standard används 32-bitarsversionen av verktygen. Om du vill ange 64-bitarsversionen av kompilatorn och verktygen lägger du till det här egenskapsgruppselementet i Myproject.vcxproj-projektfilen efter Microsoft.Cpp.default.props fil <Import />-elementet:

<PropertyGroup>
    <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>

I kommandotolken anger du det här kommandot för att använda 64-bitarsverktygen för att skapa ditt program:

msbuild myproject.vcxproj /p:PreferredToolArchitecture=x64

Använda MSBuild med en annan verktygsuppsättning

Om du har verktygsuppsättningar och bibliotek för andra versioner av Visual C++ installerade kan MSBuild skapa program för antingen den aktuella Visual C++-versionen eller för de andra installerade versionerna. Om du till exempel har installerat Visual Studio 2012 för att ange verktygsuppsättningen Visual C++ 11.0 för Windows XP lägger du till det här egenskapsgruppelementet i Myproject.vcxproj-projektfilen efter Microsoft.Cpp.props-filen <Import /> elementet:

<PropertyGroup>
    <PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup>

Om du vill återskapa projektet med Windows XP-verktygsuppsättningen Visual C++ 11.0 anger du följande kommando:

msbuild myproject.vcxproj /p:PlatformToolset=v110_xp /t:rebuild

Lägga till MSBuild-anpassningar

MSBuild tillhandahåller olika sätt att anpassa din byggprocess. De här artiklarna visar hur du lägger till anpassade byggsteg, verktyg och händelser i ditt MSBuild-projekt:

Se även