Sdílet prostřednictvím


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í.