Funkcje wewnętrzne aparatu MSBuild dla projektów w języku C++

Po ustawieniu właściwości projektu w środowisku IDE, a następnie zapisaniu projektu program Visual Studio zapisuje ustawienia projektu w pliku projektu. Plik projektu zawiera ustawienia unikatowe dla projektu. Nie zawiera jednak wszystkich ustawień wymaganych do skompilowania projektu. Plik projektu zawiera Import elementy, które zawierają sieć dodatkowych plików pomocy technicznej. Pliki pomocy technicznej zawierają pozostałe właściwości, elementy docelowe i ustawienia wymagane do skompilowania projektu.

Większość obiektów docelowych i właściwości w plikach pomocy technicznej istnieje wyłącznie w celu zaimplementowania systemu kompilacji. W tym artykule omówiono przydatne elementy docelowe i właściwości, które można określić w wierszu polecenia MSBuild. Aby dowiedzieć się więcej obiektów docelowych i właściwości, zapoznaj się z plikami w katalogach plików pomocy technicznej.

Obsługa katalogów plików

Domyślnie podstawowe pliki obsługi programu Visual Studio znajdują się w następujących katalogach. Te informacje są specyficzne dla wersji.

Visual Studio 2022 i 2019

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\

    Zawiera podstawowe pliki docelowe (.targets) i pliki właściwości (.props), które są używane przez obiekty docelowe. Domyślnie $(VCTargetsPath) makro odwołuje się do tego katalogu. Symbol <version> zastępczy odnosi się do wersji programu Visual Studio: v170 for Visual Studio 2022, v160 for Visual Studio 2019 lub v150 for Visual Studio 2017.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\

    Zawiera pliki obiektów docelowych i właściwości specyficznych dla platformy, które zastępują obiekty docelowe i właściwości w katalogu nadrzędnym. Ten katalog zawiera również bibliotekę DLL, która definiuje zadania, które są używane przez obiekty docelowe w tym katalogu. Symbol <platform> zastępczy reprezentuje podkatalog ARM, ARM64, Win32 lub x64.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    Zawiera katalogi, które umożliwiają kompilację generowania aplikacji języka C++ przy użyciu określonego <toolset>elementu . Symbol <platform> zastępczy reprezentuje podkatalog ARM, ARM64, Win32 lub x64. Symbol <toolset> zastępczy reprezentuje podkatalog zestawu narzędzi.

Visual Studio 2017

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\

    Zawiera podstawowe pliki docelowe (.targets) i pliki właściwości (.props), które są używane przez obiekty docelowe. Domyślnie $(VCTargetsPath) makro odwołuje się do tego katalogu.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\

    Zawiera pliki obiektów docelowych i właściwości specyficznych dla platformy, które zastępują obiekty docelowe i właściwości w katalogu nadrzędnym. Ten katalog zawiera również bibliotekę DLL, która definiuje zadania, które są używane przez obiekty docelowe w tym katalogu. Symbol <platform> zastępczy reprezentuje podkatalog ARM, ARM64, Win32 lub x64.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\PlatformToolsets\<toolset>\

    Zawiera katalogi, które umożliwiają kompilację generowania aplikacji języka C++ przy użyciu określonego <toolset>elementu . Symbol <platform> zastępczy reprezentuje podkatalog ARM, Win32 lub x64. Symbol <toolset> zastępczy reprezentuje podkatalog zestawu narzędzi.

Program Visual Studio 2015 i starsze wersje

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\

    Zawiera podstawowe pliki docelowe (.targets) i pliki właściwości (.props), które są używane przez obiekty docelowe. Domyślnie makro $(VCTargetsPath) odwołuje się do tego katalogu.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\

    Zawiera pliki obiektów docelowych i właściwości specyficznych dla platformy, które zastępują obiekty docelowe i właściwości w katalogu nadrzędnym. Ten katalog zawiera również bibliotekę DLL, która definiuje zadania, które są używane przez obiekty docelowe w tym katalogu. Symbol <platform> zastępczy reprezentuje podkatalog ARM, Win32 lub x64.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    Zawiera katalogi, które umożliwiają kompilację generowania aplikacji języka C++ przy użyciu określonego <toolset>elementu . Symbol <version> zastępczy to V110 for Visual Studio 2012, V120 for Visual Studio 2013 i V140 for Visual Studio 2015. Symbol <platform> zastępczy reprezentuje podkatalog ARM, Win32 lub x64. Symbol <toolset> zastępczy reprezentuje podkatalog zestawu narzędzi. Na przykład jest to wersja 140 do kompilowania aplikacji systemu Windows przy użyciu zestawu narzędzi programu Visual Studio 2015. Możesz też v120_xp kompilować dla systemu Windows XP przy użyciu zestawu narzędzi programu Visual Studio 2013.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\Platforms\<platform>\PlatformToolsets\<toolset>\

    Ścieżki umożliwiające kompilację do generowania aplikacji programu Visual Studio 2008 lub Visual Studio 2010 nie zawierają elementu <version>. W tych wersjach <platform> symbol zastępczy reprezentuje podkatalog Itanium, Win32 lub x64. Symbol <toolset> zastępczy reprezentuje podkatalog zestawu narzędzi w wersji 90 lub 100.

Pliki pomocy technicznej

Katalogi plików pomocy technicznej zawierają pliki z następującymi rozszerzeniami:

Numer wewnętrzny opis
.targets Zawiera Target elementy XML, które określają zadania wykonywane przez obiekt docelowy. Może również zawierać PropertyGroupelementy , ItemGroup, ItemDefinitionGroupi zdefiniowane przez Item użytkownika, które są używane do przypisywania plików i opcji wiersza polecenia do parametrów zadania.

Aby uzyskać więcej informacji, zobacz Target Element (MSBuild).
.props Zawiera Property Group i zdefiniowane przez Property użytkownika elementy XML, które określają ustawienia plików i parametrów, które są używane podczas kompilacji.

Może również zawierać ItemDefinitionGroup i zdefiniowane przez Item użytkownika elementy XML, które określają dodatkowe ustawienia. Elementy zdefiniowane w grupie definicji elementu przypominają właściwości, ale nie można uzyskać dostępu z wiersza polecenia. Pliki projektów programu Visual Studio często używają elementów zamiast właściwości do reprezentowania ustawień.

Aby uzyskać więcej informacji, zobacz Element (MSBuild),ItemDefinitionGroupElement (MSBuild)i Item Element (MSBuild).ItemGroup
.xml Zawiera elementy XML, które deklarują i inicjują elementy interfejsu użytkownika IDE. Na przykład arkusze właściwości, strony właściwości, kontrolki pola tekstowego i kontrolki listbox.

Pliki .xml obsługują bezpośrednio środowisko IDE, a nie MSBuild. Jednak wartości właściwości środowiska IDE są przypisywane do właściwości i elementów kompilacji.

Większość .xml plików jest w podkatalogu specyficznym dla ustawień regionalnych. Na przykład pliki w regionie English-US znajdują się w pliku $(VCTargetsPath)\1033\.

Obiekty docelowe i właściwości użytkownika

Aby efektywnie korzystać z programu MSBuild, pomaga wiedzieć, które właściwości i cele są przydatne i istotne. Większość właściwości i obiektów docelowych pomaga zaimplementować system kompilacji programu Visual Studio i nie ma znaczenia dla użytkownika. W tej sekcji opisano właściwości i cele zorientowane na użytkownika, o których warto wiedzieć.

PlatformToolset Właściwość

Właściwość PlatformToolset określa, który zestaw narzędzi MSVC jest używany w kompilacji. Domyślnie jest używany bieżący zestaw narzędzi. Po ustawieniu tej właściwości jej wartość zostanie połączona z ciągami literału w celu utworzenia ścieżki. Jest to katalog zawierający właściwość i pliki docelowe wymagane do utworzenia projektu dla określonej platformy. Zestaw narzędzi platformy należy zainstalować w celu utworzenia przy użyciu tej wersji zestawu narzędzi platformy.

Na przykład ustaw PlatformToolset właściwość na , aby v140 używać narzędzi i bibliotek programu Visual Studio 2015 do kompilowania aplikacji:

msbuild myProject.vcxproj /p:PlatformToolset=v140

PreferredToolArchitecture Właściwość

Właściwość PreferredToolArchitecture określa, czy kompilator 32-bitowy czy 64-bitowy i narzędzia są używane w kompilacji. Ta właściwość nie ma wpływu na architekturę ani konfigurację platformy wyjściowej. Domyślnie program MSBuild używa wersji x86 kompilatora i narzędzi, jeśli ta właściwość nie jest ustawiona.

Na przykład ustaw PreferredToolArchitecture właściwość tak, aby x64 korzystała z 64-bitowego kompilatora i narzędzi do kompilowania aplikacji:

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

UseEnv Właściwość

Domyślnie ustawienia specyficzne dla platformy dla bieżącego projektu zastępują PATHzmienne środowiskowe , , INCLUDELIBPATHLIB, , CONFIGURATIONi .PLATFORM UseEnv Ustaw właściwość na true wartość , aby zagwarantować, że zmienne środowiskowe nie są zastępowane.

msbuild myProject.vcxproj /p:UseEnv=true

Cele

W plikach obsługi programu Visual Studio znajdują się setki elementów docelowych. Jednak większość z tych elementów jest obiektami docelowymi zorientowanymi na system, które użytkownik może zignorować. Większość obiektów docelowych systemu jest poprzedzona znakiem podkreślenia (_) lub ma nazwę rozpoczynającą się od PrepareFor, , , ComputeBefore, After, Prelub Post.

W poniższej tabeli wymieniono kilka przydatnych obiektów docelowych zorientowanych na użytkownika.

Cel opis
BscMake Wykonuje narzędzie Microsoft Browse Information Maintenance Tool, bscmake.exe.
Build Kompiluje projekt.

Ten element docelowy jest domyślny dla projektu.
ClCompile Wykonuje narzędzie kompilatora MSVC, cl.exe.
Clean Usuwa tymczasowe i pośrednie pliki kompilacji.
Lib Wykonuje narzędzie Microsoft 32-Bit Library Manager, lib.exe.
Link Wykonuje narzędzie konsolidatora MSVC, link.exe.
ManifestResourceCompile Wyodrębnia listę zasobów z manifestu, a następnie wykonuje narzędzie kompilatora zasobów systemu Microsoft Windows. rc.exe
Midl Wykonuje narzędzie midl.exekompilatora języka MICROSOFT Interface Definition Language (MIDL), .
Rebuild Czyści, a następnie kompiluje projekt.
ResourceCompile Wykonuje narzędzie kompilatora zasobów systemu Microsoft Windows, rc.exe.
XdcMake Wykonuje narzędzie dokumentacji XML, xdcmake.exe.
Xsd Wykonuje narzędzie definicji schematu XML, xsd.exe. Zobacz notatkę.

Uwaga

W programie Visual Studio 2017 lub nowszym obsługa projektu C++ dla .xsd plików jest przestarzała. Nadal można używać, Microsoft.VisualC.CppCodeProvider dodając CppCodeProvider.dll ręcznie do GAC.

Zobacz też

Dokumentacja zadania MSBuild
BscMake Zadanie
CL Zadanie
CPPClean Zadanie
LIB Zadanie
Link Zadanie
MIDL Zadanie
MT Zadanie
RC Zadanie
SetEnv Zadanie
VCMessage Zadanie
XDCMake Zadanie