Exemplarische Vorgehensweise: Verwenden von MSBuild zum Erstellen eines Visual C++-Projekts

Aktualisiert: April 2011

Diese exemplarische Vorgehensweise veranschaulicht, wie mit MSBuild ein Visual C++-Projekt an einer Eingabeaufforderung erstellt wird. Sie erfahren, wie die C++-Quelldateien und eine XML-basierte Projektdatei für eine Visual C++-Konsolenanwendung erstellt werden. Nach der Erstellung des Projekts erfahren Sie, wie der Buildprozess angepasst wird.

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

  • Erstellen der C++-Quelldateien für das Projekt

  • Erstellen der MSBuild-XML-Projektdatei

  • Erstellen des Projekts mithilfe von MSBuild

  • Anpassen des Projekts mithilfe von MSBuild

Vorbereitungsmaßnahmen

Für diese exemplarische Vorgehensweise wird Folgendes benötigt:

  • Visual Studio 2010

  • Allgemeine Kenntnisse des MSBuild-Systems.

Erstellen der C++-Quelldateien

In dieser exemplarischen Vorgehensweise erstellen Sie ein Projekt, das eine Quell- und eine Headerdatei besitzt. Die Quelldatei "main.cpp" enthält die Hauptfunktion für die Konsolenanwendung. Die Headerdatei "main.h" enthält Code zum Einschließen der iostream-Headerdatei. Sie können diese C++-Dateien mit Visual Studio oder einem Text-Editor erstellen.

So erstellen Sie die C++-Quelldateien für das Projekt

  1. Erstellen Sie ein Verzeichnis für das Projekt.

  2. Erstellen Sie eine Datei mit dem Namen "main.cpp", und fügen Sie der Datei den folgenden Code hinzu:

    // main.cpp : the application source code.
    #include <iostream>
    #include "main.h"
    int main()
    {
       std::cout << "Hello, from MSBuild!\n";
       return 0;
    }
    
  3. Erstellen Sie eine Datei mit dem Namen "main.h", und fügen Sie der Datei den folgenden Code hinzu:

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

Erstellen der XML-MSBuild-Projektdatei

Eine MSBuild-Projektdatei ist eine XML-Datei, die ein Projektstammelement (<Project>) enthält. Im folgenden Beispielprojekt enthält das <Project>-Element sieben untergeordnete Elemente:

  • Drei Elementgruppentags (<ItemGroup>), die Projektkonfiguration und Plattform sowie Quelldateiname und Headerdateiname angeben.

  • Drei Importtags (<Import>), die den Speicherort von Microsoft Visual C++-Einstellungen angeben.

  • Ein Eigenschaftsgruppentag (<PropertyGroup>), das Projekteinstellungen angibt.

So erstellen Sie die MSBuild-Projektdatei

  1. Erstellen Sie mithilfe eines Text-Editors eine Projektdatei mit dem Namen myproject.vcxproj, und fügen Sie anschließend das folgende <Project>-Stammelement hinzu. Fügen Sie die Elemente in den folgenden Verfahrensschritten zwischen den <Project>-Stammtags ein:

    <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    </Project>
    
  2. Fügen Sie die folgenden zwei untergeordneten <ProjectConfiguration>-Elemente in einem <ItemGroup>-Element hinzu. Das untergeordnete Element gibt Debug- und Releasekonfigurationen für ein 32-Bit-Windows-Betriebssystem an:

    <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. Fügen Sie das folgende <Import/>-Element hinzu, das den Pfad der standardmäßigen C++-Einstellungen für dieses Projekt angibt:

    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
    
  4. Fügen Sie das folgende Eigenschaftengruppenelement (<PropertyGroup>) hinzu, das zwei Projekteigenschaften angibt:

    <PropertyGroup>
       <ConfigurationType>Application</ConfigurationType>
       <ShowAllFiles>false</ShowAllFiles>
    </PropertyGroup>
    
  5. Fügen Sie das folgende <Import/>-Element hinzu, das den Pfad der aktuellen C++-Einstellungen für dieses Projekt angibt:

    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
    
  6. Fügen Sie das folgende untergeordnete <ClCompile>-Element in einem <ImportGroup>-Element hinzu. Das untergeordnete Element gibt den Namen der zu kompilierenden C/C++-Quelldatei an:

    <ItemGroup>
       <ClCompile Include="main.cpp" />
    </ItemGroup>
    
  7. Fügen Sie das folgende untergeordnete <ClInclude>-Element in einem <ImportGroup>-Element hinzu. Das untergeordnete Element gibt den Namen der Headerdatei für die C/C++-Quelldatei an:

    <ItemGroup>
       <ClInclude Include="main.h" />
    </ItemGroup>
    
  8. Fügen Sie das folgende <Import>-Element hinzu, das den Pfad der Datei angibt, durch die das Ziel für das Projekt definiert wird:

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

Vollständige Projektdatei

Im folgenden Code wird die zuvor erstellte vollständige Projektdatei dargestellt.

<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="https://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>
    <ShowAllFiles>false</ShowAllFiles>
  </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>

Verwenden von MSBuild für die Projekterstellung

Geben Sie an der Eingabeaufforderung den folgenden Befehl ein, um die Konsolenanwendung zu erstellen:

msbuild myproject.vcxproj /p:configuration=debug

Von MSBuild wird ein Verzeichnis für die Ausgabedateien erstellt, und anschließend wird das Projekt kompiliert und verknüpft, um das Programm "Myproject.exe" zu generieren. Nachdem der Buildprozess beendet wurde, verwenden Sie den folgenden Befehl, um die Anwendung auszuführen:

myproject

In der Anwendung sollte "Hello, from MSBuild!" im Konsolenfenster angezeigt werden.

Anpassen des Projekts

MSBuild ermöglicht die Ausführung von vordefinierten Buildzielen, das Übernehmen von benutzerdefinierten Eigenschaften und das Verwenden benutzerdefinierter Tools, Ereignisse und Buildschritte. In diesem Abschnitt werden die folgenden Aufgaben veranschaulicht:

  • Verwenden von MSBuild mit Buildzielen

  • Verwenden von MSBuild mit Buildeigenschaften

  • Verwenden von MSBuild mit unterschiedlichen Toolsets

  • Hinzufügen von MSBuild-Anpassungen

Verwenden von MSBuild mit Buildzielen

Ein Buildziel ist ein benannter Satz mit vordefinierten oder benutzerdefinierten Befehlen, die während der Builderstellung ausgeführt werden können. Verwenden Sie die Zielbefehlszeilenoption (/t), um ein Buildziel anzugeben. Im Fall des myproject-Beispielprojekts werden vom vordefinierten clean-Ziel alle Dateien im Debugordner gelöscht, und eine neue Protokolldatei wird erstellt.

Geben Sie an der Eingabeaufforderung den folgenden Befehl ein, um myproject zu bereinigen.

msbuild myproject.vcxproj /t:clean

Verwenden von MSBuild mit Buildeigenschaften

Die Eigenschaften-Befehlszeilenoption (/p) ermöglicht es Ihnen, eine Eigenschaft in der Projektbuilddatei zu überschreiben. Im myproject- Beispielprojekt wird die Release- oder Debugbuildkonfiguration durch die Configuration-Eigenschaft angegeben. Das Betriebssystem, das für die Ausführung der erstellten Anwendung vorgesehen ist, wird durch die Platform-Eigenschaft angegeben.

Geben Sie an der Eingabeaufforderung den folgenden Befehl ein, um einen Debugbuild der myproject-Anwendung zu erstellen, die für die Ausführung unter Windows (32 Bit) vorgesehen ist.

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

Angenommen, durch das myproject-Beispielprojekt wird auch eine Konfiguration für Windows (64 Bit) und eine andere Konfiguration für ein benutzerdefiniertes Betriebssystem mit dem Namen myplatform definiert.

Geben Sie an der Eingabeaufforderung den folgenden Befehl ein, um einen Releasebuild zu erstellen, der unter Windows (64 Bit) ausgeführt wird.

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

Geben Sie an der Eingabeaufforderung den folgenden Befehl ein, um einen Releasebuild für myplatform anzuzeigen:

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

Verwenden von MSBuild mit einem anderen Toolset

Wenn sowohl die Visual C++-Bibliothek 9.0 als auch die Version 10.0 (Toolsets) installiert wurde, können von MSBuild Anwendungen entweder für Visual C++ 9.0 oder für 10.0 erstellt werden. Fügen Sie zum Angeben des Toolsets für Visual C++ 9.0 das folgende Eigenschaftengruppenelement der Projektdatei "Myproject.vcxproj" nach dem <Import />-Element von Microsoft.Cpp.props hinzu:

<PropertyGroup>
    <PlatformToolset>v90</PlatformToolset>
</PropertyGroup>

Geben Sie einen der folgenden Befehle ein, um das Projekt mit dem Toolset für Visual C++ 9.0 erneut zu erstellen:

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

Hinzufügen von MSBuild-Anpassungen

MSBuild bietet verschiedene Möglichkeiten zur Anpassung des Buildprozesses. Die folgenden Themen zeigen, wie dem MSBuild-Projekt benutzerdefinierte Buildschritte, Tools und Ereignisse hinzugefügt werden:

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

April 2011

Es wurden Anführungszeichen um das xmlns-Attribut im ersten Codeausschnitt hinzugefügt.

Kundenfeedback.