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.vcxproj
.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
Utwórz folder dla projektu.
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; }
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
Użyj edytora tekstów, aby utworzyć plik projektu o nazwie
myproject.vcxproj
, a następnie dodać element główny<Project>
pokazany tutaj. (JeśliToolsVersion="14.0"
używasz programu Visual Studio 2015,ToolsVersion="15.0"
jeśli używasz programu Visual Studio 2017 lubToolsVersion="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>
.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>
Dodaj element określający ścieżkę
<Import>
domyślnych ustawień języka C++ dla tego projektu:<Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
Dodaj element grupy właściwości (
<PropertyGroup>
), który określa dwie właściwości projektu i<ConfigurationType>
<PlatformToolset>
. (Użyjv140
jako wartości<PlatformToolset>
, jeśli używasz programu Visual Studio 2015,v141
jeśli używasz programu Visual Studio 2017,v142
jeśli używasz programu Visual Studio 2019 lubv143
, jeśli używasz programu Visual Studio 2022).<PropertyGroup> <ConfigurationType>Application</ConfigurationType> <PlatformToolset>v143</PlatformToolset> </PropertyGroup>
Dodaj element określający ścieżkę
<Import>
bieżących ustawień języka C++ dla tego projektu:<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
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.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>
<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ć myproject
polecenie :
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 myplatform
polecenia :
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:
- Instrukcje: dodawanie niestandardowego kroku kompilacji do projektów MSBuild
- Instrukcje: dodawanie niestandardowych narzędzi kompilacji do projektów MSBuild
- Instrukcje: korzystanie ze zdarzeń kompilacji w projektach MSBuild