Udostępnij za pośrednictwem


Wskazówki: Korzystanie z MSBuild do tworzenia projektu Visual C++

W tym przewodniku pokazano, jak używać programu MSBuild w wierszu polecenia do kompilowania projektu programu Visual Studio C++. Dowiesz się, jak utworzyć plik projektu oparty na .vcxproj formacie XML dla aplikacji konsolowej Visual C++. Po utworzeniu projektu dowiesz się, jak dostosować proces kompilacji.

Ważne

Nie używaj tego podejścia, jeśli zamierzasz później edytować plik projektu przy użyciu środowiska IDE programu Visual Studio. Jeśli tworzysz .vcxproj plik ręcznie, środowisko IDE programu Visual Studio może nie być w stanie go edytować ani załadować, zwłaszcza jeśli projekt używa symboli wieloznacznych w elementach projektu. Aby uzyskać więcej informacji, zobacz i struktura plików oraz pliki i.vcxprojsymbole wieloznaczne..props.vcxproj

W tym przewodniku przedstawiono następujące zadania:

  • Tworzenie plików źródłowych języka C++ dla projektu.
  • Tworzenie pliku projektu XML MSBuild.
  • Kompilowanie projektu przy użyciu programu MSBuild.
  • Dostosowywanie projektu przy użyciu programu MSBuild.

Wymagania wstępne

Aby ukończyć ten przewodnik, potrzebne są następujące wymagania wstępne:

  • Kopia programu Visual Studio z zainstalowanym pakietem roboczym Programowanie aplikacji klasycznych w języku C++ .
  • Ogólna wiedza na temat systemu MSBuild.

Uwaga

Większość instrukcji kompilacji niskiego poziomu znajduje się w .targets plikach i .props zdefiniowanych w domyślnym folderze targets przechowywanym we właściwości $(VCTargetsPath). W tym miejscu znajdziesz pliki, takie jak Microsoft.Cpp.Common.props. Domyślna ścieżka dla tych plików w programie Visual Studio 2015 i starszych wersjach jest w obszarze %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\.

Uwaga

Większość instrukcji kompilacji niskiego poziomu znajduje się w .targets plikach i .props zdefiniowanych w domyślnym folderze targets przechowywanym we właściwości $(VCTargetsPath). W tym miejscu znajdziesz pliki, takie jak Microsoft.Cpp.Common.props. Domyślna ścieżka dla tych plików w programie Visual Studio 2017 znajduje się w obszarze %VSINSTALLDIR%Common7\IDE\VC\VCTargets\. Program Visual Studio 2015 i starsze wersje są przechowywane w programie %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\.

Uwaga

Większość instrukcji kompilacji niskiego poziomu znajduje się w .targets plikach i .props zdefiniowanych w domyślnym folderze targets przechowywanym we właściwości $(VCTargetsPath). W tym miejscu znajdziesz pliki, takie jak Microsoft.Cpp.Common.props. Domyślna ścieżka dla tych plików znajduje się w obszarze %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\. Element <version> path jest specyficzny dla wersji programu Visual Studio. v160 Jest przeznaczony dla programu Visual Studio 2019. Program Visual Studio 2017 przechowywał te pliki w obszarze %VSINSTALLDIR%Common7\IDE\VC\VCTargets\. Program Visual Studio 2015 i starsze wersje są przechowywane w programie %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\.

Tworzenie plików źródłowych języka C++

W tym przewodniku utworzysz projekt zawierający plik źródłowy i plik nagłówkowy. Plik main.cpp źródłowy zawiera main funkcję dla aplikacji konsolowej. Plik main.h nagłówka zawiera kod umożliwiający dołączenie pliku nagłówka <iostream> . Te pliki języka C++ można utworzyć przy użyciu programu Visual Studio lub edytora tekstów, takiego jak Visual Studio Code.

Aby utworzyć pliki źródłowe języka C++ dla projektu

  1. Utwórz folder dla projektu.

  2. Utwórz plik o nazwie main.cpp i dodaj ten kod do pliku:

    // main.cpp : the application source code.
    #include <iostream>
    #include "main.h"
    int main()
    {
       std::cout << "Hello, from MSBuild!\n";
       return 0;
    }
    
  3. Utwórz plik o nazwie main.h i dodaj ten kod do pliku:

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

Tworzenie pliku projektu MSBuild XML

Plik projektu MSBuild jest plikiem XML zawierającym element główny projektu (<Project>). W przykładowym projekcie, który <Project> utworzysz, element zawiera siedem elementów podrzędnych:

  • Trzy tagi grupy elementów (<ItemGroup>), które określają konfigurację i platformę projektu, nazwę pliku źródłowego i nazwę pliku nagłówka.
  • Trzy tagi importu (<Import>), które określają lokalizację ustawień programu Microsoft Visual C++.
  • Tag grupy właściwości (<PropertyGroup>), który określa ustawienia projektu.

Aby utworzyć plik projektu MSBuild

  1. Użyj edytora tekstów, aby utworzyć plik projektu o nazwie myproject.vcxproj, a następnie dodać element główny <Project> pokazany tutaj. (Jeśli ToolsVersion="14.0" używasz programu Visual Studio 2015, ToolsVersion="15.0" jeśli używasz programu Visual Studio 2017 lub ToolsVersion="16.0" jeśli używasz programu Visual Studio 2019).

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

    Wstaw elementy w następnych krokach procedury między tagami głównymi <Project> .

  2. Dodaj te dwa <ProjectConfiguration> elementy podrzędne w elemecie <ItemGroup> . Element podrzędny określa konfiguracje debugowania i wydania dla 32-bitowego systemu operacyjnego Windows:

    <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. Dodaj element określający ścieżkę <Import> domyślnych ustawień języka C++ dla tego projektu:

    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
    
  4. Dodaj element grupy właściwości (<PropertyGroup>), który określa dwie właściwości projektu i <ConfigurationType><PlatformToolset>. (Użyj v140 jako <PlatformToolset> wartości, jeśli używasz programu Visual Studio 2015, v141 jeśli używasz programu Visual Studio 2017 lub v142 jeśli używasz programu Visual Studio 2019).

    <PropertyGroup>
      <ConfigurationType>Application</ConfigurationType>
      <PlatformToolset>v142</PlatformToolset>
    </PropertyGroup>
    
  5. Dodaj element określający ścieżkę <Import> bieżących ustawień języka C++ dla tego projektu:

    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
    
  6. Dodaj element podrzędny <ClCompile> w elemecie <ItemGroup> . Element podrzędny określa nazwę pliku źródłowego C/C++ do skompilowania:

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

    Uwaga

    <ClCompile> jest obiektem docelowym kompilacji i jest zdefiniowany w domyślnym folderze targets.

  7. Dodaj element podrzędny <ClInclude> w elemecie <ItemGroup> . Element podrzędny określa nazwę pliku nagłówka dla pliku źródłowego C/C++:

    <ItemGroup>
      <ClInclude Include="main.h" />
    </ItemGroup>
    
  8. <Import> Dodaj element określający ścieżkę pliku, który definiuje element docelowy dla tego projektu:

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

Ukończ plik projektu

Ten kod przedstawia kompletny plik projektu utworzony w poprzedniej procedurze. (Użyj programu ToolsVersion="15.0" Visual Studio 2017 lub ToolsVersion="14.0" 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>

Kompilowanie projektu przy użyciu programu MSBuild

Wprowadź to polecenie w wierszu polecenia, aby skompilować aplikację konsolową:

msbuild myproject.vcxproj /p:configuration=debug

Program MSBuild tworzy folder dla plików wyjściowych, a następnie kompiluje i łączy projekt w celu wygenerowania Myproject.exe programu. Po zakończeniu procesu kompilacji użyj tego polecenia, aby uruchomić aplikację z folderu debugowania:

myproject

Aplikacja powinna wyświetlić komunikat "Hello, from MSBuild!" w oknie konsoli.

Dostosowywanie projektu

Program MSBuild umożliwia wykonywanie wstępnie zdefiniowanych celów kompilacji, stosowanie właściwości zdefiniowanych przez użytkownika oraz używanie niestandardowych narzędzi, zdarzeń i kroków kompilacji. W tej sekcji przedstawiono następujące zadania:

  • Korzystanie z programu MSBuild z miejscami docelowymi kompilacji.
  • Używanie programu MSBuild z właściwościami kompilacji.
  • Używanie programu MSBuild z 64-bitowym kompilatorem i narzędziami.
  • Korzystanie z programu MSBuild z różnymi zestawami narzędzi.
  • Dodawanie dostosowań programu MSBuild.

Używanie programu MSBuild z miejscami docelowymi kompilacji

Element docelowy kompilacji to nazwany zestaw wstępnie zdefiniowanych lub zdefiniowanych przez użytkownika poleceń, które można wykonać podczas kompilacji. Użyj docelowej opcji wiersza polecenia (/t), aby określić element docelowy kompilacji. W przykładowym myproject projekcie wstępnie zdefiniowany clean element docelowy usuwa wszystkie pliki w folderze debugowania i tworzy nowy plik dziennika.

W wierszu polecenia wprowadź następujące polecenie, aby wyczyścić myprojectpolecenie :

msbuild myproject.vcxproj /t:clean

Używanie programu MSBuild z właściwościami kompilacji

Opcja wiersza polecenia właściwości (/p) umożliwia zastąpienie właściwości w pliku kompilacji projektu. W przykładowym projekcie myproject konfiguracja kompilacji wydania lub debugowania jest określana Configuration przez właściwość . System operacyjny, który będzie używany do uruchamiania utworzonej aplikacji, jest określony przez Platform właściwość .

W wierszu polecenia wprowadź to polecenie, aby utworzyć kompilację myproject debugowania aplikacji do uruchomienia w 32-bitowym systemie Windows:

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

Załóżmy, że przykładowy myproject projekt definiuje również konfigurację 64-bitowego systemu Windows i inną konfigurację niestandardowego systemu operacyjnego o nazwie myplatform.

W wierszu polecenia wprowadź to polecenie, aby utworzyć kompilację wydania działającą w 64-bitowym systemie Windows:

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

W wierszu polecenia wprowadź to polecenie, aby utworzyć kompilację wydania dla myplatformpolecenia :

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

Używanie programu MSBuild z 64-bitowym kompilatorem i narzędziami

Jeśli program Visual Studio został zainstalowany w 64-bitowym systemie Windows, 64-bitowe narzędzia natywne i krzyżowe są instalowane domyślnie. Program MSBuild można skonfigurować tak, aby używał 64-bitowego kompilatora i narzędzi do kompilowania aplikacji, ustawiając PreferredToolArchitecture właściwość . Ta właściwość nie ma wpływu na konfigurację projektu ani właściwości platformy. Domyślnie jest używana 32-bitowa wersja narzędzi. Aby określić 64-bitową wersję kompilatora i narzędzi, dodaj ten element grupy właściwości do Myproject.vcxproj pliku projektu po elememencie Microsoft.Cpp.default.props pliku <Import /> :

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

W wierszu polecenia wprowadź to polecenie, aby skompilować aplikację przy użyciu narzędzi 64-bitowych:

msbuild myproject.vcxproj /p:PreferredToolArchitecture=x64

Korzystanie z programu MSBuild z innym zestawem narzędzi

Jeśli masz zainstalowane zestawy narzędzi i biblioteki dla innych wersji programu Visual C++, program MSBuild może tworzyć aplikacje dla bieżącej wersji visual C++ lub dla innych zainstalowanych wersji. Jeśli na przykład zainstalowano program Visual Studio 2012, aby określić zestaw narzędzi programu Visual C++ 11.0 dla systemu Windows XP, dodaj ten element grupy właściwości do Myproject.vcxproj pliku projektu po elemenie Microsoft.Cpp.props pliku <Import /> :

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

Aby ponownie skompilować projekt za pomocą zestawu narzędzi visual C++ 11.0 systemu Windows XP, wprowadź następujące polecenie:

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

Dodawanie dostosowań programu MSBuild

Program MSBuild udostępnia różne sposoby dostosowywania procesu kompilacji. W tych artykułach pokazano, jak dodać niestandardowe kroki kompilacji, narzędzia i zdarzenia do projektu MSBuild:

Zobacz też