Přizpůsobení sestavení C++
Pomocí adresáře.Build.props a Directory.Build.targets můžete přizpůsobit všechny projekty C++ v rámci společné nadřazené složky. Viz Přizpůsobení podle složky. Kromě toho projekty C++ poskytují následující body rozšiřitelnosti. Vlastnosti můžete použít k určení .props
souborů, .targets
které se mají automaticky importovat před nebo po souborech Microsoft.Cpp.* :
- ForceImportAfterCppDefaultProps
- ForceImportBeforeCppProps
- ForceImportAfterCppProps
- ForceImportBeforeCppTargets
- ForceImportAfterCppTargets
Tyto importy poskytují kontrolu nad sekvencí definic vlastností, které závisí na jiných vlastnostech nebo cílech závislých na jiných cílech. Posloupnost importů v tomto .vcxproj
prvku vypadá takto:
vcxproj
Microsoft.Cpp.default.props
Microsoft.Common.props
Directory.Build.props
Microsoft.Cpp.props
Microsoft.Cpp.targets
Microsoft.Common.targets
Directory.Build.targets
Viz struktura souborů .vcxproj a .props. Pokud potřebujete definovat vlastnosti, které používají jiné vlastnosti definované v microsoft.Cpp.default.props nebo Microsoft.Cpp.props, můžete vytvořit jiný .props
soubor (například MyProps.props) a definovat ForceImportAfterCppProps
vlastnost odkazující Directory.Build.props
na ni:
<PropertyGroup>
<ForceImportAfterCppProps>$(MSBuildThisFileDirectory)\MyProps.props</ForceImportAfterCppProps>
</PropertyGroup>
MyProps.props se automaticky naimportují na konci Microsoft.Cpp.props.
Přizpůsobení všech sestavení jazyka C++
Přizpůsobení instalace sady Visual Studio se nedoporučuje, protože není snadné sledovat taková přizpůsobení, ale pokud rozšiřujete Visual Studio o přizpůsobení sestavení C++ pro konkrétní platformu, můžete vytvořit .targets
soubory pro každou platformu a umístit je do příslušných složek importu pro tyto platformy jako součást rozšíření sady Visual Studio.
Soubor .targets
pro platformu Win32, Microsoft.Cpp.Win32.targets, obsahuje následující Import
prvek:
<Import Project="$(VCTargetsPath)\Platforms\Win32\ImportBefore\*.targets"
Condition="Exists('$(VCTargetsPath)\Platforms\Win32\ImportBefore')"
/>
Na konci stejného souboru je podobný prvek:
<Import Project="$(VCTargetsPath)\Platforms\Win32\ImportAfter\*.targets"
Condition="Exists('$(VCTargetsPath)\Platforms\Win32\ImportAfter')"
/>
Podobné prvky importu existují pro jiné cílové platformy v souboru *%ProgramFiles32%\MSBuild\Microsoft.Cpp\v{version}\Platforms*.
Jakmile soubor umístíte .targets
do příslušné ImportAfter
složky podle platformy, nástroj MSBuild naimportuje soubor do každého sestavení C++ pro danou platformu. V případě potřeby můžete do ní umístit více .targets
souborů.
Pomocí rozšiřitelnosti sady Visual Studio jsou možná další přizpůsobení, například definování nové platformy. Další informace naleznete v tématu rozšiřitelnost projektu jazyka C++.
Zadání vlastního importu na příkazovém řádku
Pro vlastní .targets
, které chcete zahrnout pro konkrétní sestavení projektu C++, nastavte jednu nebo obě vlastnosti ForceImportBeforeCppTargets
a ForceImportAfterCppTargets
na příkazovém řádku.
msbuild /p:ForceImportBeforeCppTargets="C:\build\config\Custom.Before.Microsoft.Cpp.Targets" MyCppProject.vcxproj
Globální nastavení (například všechny sestavení jazyka C++ pro platformu na buildovém serveru) mají dvě metody. Nejprve můžete tyto vlastnosti nastavit pomocí systémové proměnné prostředí, která je vždy nastavena. Tato technika funguje, protože nástroj MSBuild vždy čte prostředí a vytváří (nebo přepisuje) vlastnosti pro všechny proměnné prostředí.