Dostosowywanie kompilacji języka C++
Można użyć directory.Build.props i Directory.Build.targets , aby dostosować wszystkie projekty języka C++ w typowym folderze nadrzędnym. Zobacz Dostosowywanie według folderu. Ponadto projekty języka C++ zapewniają następujące punkty rozszerzalności. Za pomocą właściwości można określić .props
pliki lub .targets
pliki do automatycznego zaimportowania przed plikiem Microsoft.Cpp.* lub po nich:
- ForceImportAfterCppDefaultProps
- ForceImportBeforeCppProps
- ForceImportAfterCppProps
- ForceImportBeforeCppTargets
- ForceImportAfterCppTargets
Importy te zapewniają kontrolę nad sekwencją definicji właściwości, które zależą od innych właściwości lub obiektów docelowych, które zależą od innych obiektów docelowych. Sekwencja importu w obiekcie .vcxproj
wygląda następująco:
Vcxproj
Microsoft.Cpp.default.props
Microsoft.Common.props
Directory.Build.props
Microsoft.Cpp.props
Microsoft.Cpp.targets
Microsoft.common.targets
Directory.Build.targets
Zobacz strukturę plików .vcxproj i .props. Jeśli musisz zdefiniować właściwości korzystające z innych właściwości zdefiniowanych w pliku Microsoft.Cpp.default.props lub Microsoft.Cpp.props, możesz utworzyć inny .props
plik (np. MyProps.props) i zdefiniować ForceImportAfterCppProps
właściwość wskazującą Directory.Build.props
na nią:
<PropertyGroup>
<ForceImportAfterCppProps>$(MSBuildThisFileDirectory)\MyProps.props</ForceImportAfterCppProps>
</PropertyGroup>
Plik MyProps.props zostanie automatycznie zaimportowany na samym końcu pliku Microsoft.Cpp.props.
Dostosowywanie wszystkich kompilacji języka C++
Dostosowywanie instalacji programu Visual Studio nie jest zalecane, ponieważ śledzenie takich dostosowań nie jest łatwe, ale jeśli rozszerzasz program Visual Studio w celu dostosowania kompilacji języka C++ dla określonej platformy, możesz tworzyć .targets
pliki dla każdej platformy i umieszczać je w odpowiednich folderach importu dla tych platform w ramach rozszerzenia programu Visual Studio.
Plik .targets
dla platformy Win32 Microsoft.Cpp.Win32.targets zawiera następujący Import
element:
<Import Project="$(VCTargetsPath)\Platforms\Win32\ImportBefore\*.targets"
Condition="Exists('$(VCTargetsPath)\Platforms\Win32\ImportBefore')"
/>
Na końcu tego samego pliku znajduje się podobny element:
<Import Project="$(VCTargetsPath)\Platforms\Win32\ImportAfter\*.targets"
Condition="Exists('$(VCTargetsPath)\Platforms\Win32\ImportAfter')"
/>
Podobne elementy importu istnieją dla innych platform docelowych w folderze *%ProgramFiles32%\MSBuild\Microsoft.Cpp\v{version}\Platforms*.
Po wprowadzeniu .targets
pliku w odpowiednim ImportAfter
folderze zgodnie z platformą program MSBuild zaimportuje plik do każdej kompilacji języka C++ dla tej platformy. W razie potrzeby można umieścić tam wiele .targets
plików.
Dzięki rozszerzalności programu Visual Studio możliwe są dalsze dostosowania, takie jak definiowanie nowej platformy. Aby uzyskać więcej informacji, zobacz Rozszerzalność projektu C++.
Określanie niestandardowego importu w wierszu polecenia
W przypadku niestandardowego .targets
, który chcesz uwzględnić dla określonej kompilacji projektu języka C++, ustaw jedną lub obie właściwości ForceImportBeforeCppTargets
i ForceImportAfterCppTargets
w wierszu polecenia.
msbuild /p:ForceImportBeforeCppTargets="C:\build\config\Custom.Before.Microsoft.Cpp.Targets" MyCppProject.vcxproj
Dla ustawienia globalnego (na przykład wszystkie kompilacje języka C++ dla platformy na serwerze kompilacji) istnieją dwie metody. Najpierw można ustawić te właściwości przy użyciu zmiennej środowiskowej systemu, która jest zawsze ustawiana. Ta technika działa, ponieważ program MSBuild zawsze odczytuje środowisko i tworzy (lub zastępuje) właściwości dla wszystkich zmiennych środowiskowych.