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ć PropertyGroup elementy , ItemGroup , ItemDefinitionGroup i 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), ItemDefinitionGroup Element (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łasność
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łasność
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łasność
Domyślnie ustawienia specyficzne dla platformy dla bieżącego projektu zastępują PATH
zmienne środowiskowe , , INCLUDE
LIBPATH
LIB
, , CONFIGURATION
i .PLATFORM
UseEnv
Ustaw właściwość na true
wartość , aby zagwarantować, że zmienne środowiskowe nie są zastępowane.
msbuild myProject.vcxproj /p:UseEnv=true
Elementy docelowe
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
, , , Compute
Before
, After
, Pre
lub Post
.
W poniższej tabeli wymieniono kilka przydatnych obiektów docelowych zorientowanych na użytkownika.
Obiekt docelowy | 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.exe kompilatora 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