Aracılığıyla paylaş


C++ derlemelerini özelleştirme

Ortak bir üst klasör altındaki tüm C++ projelerini özelleştirmek için Directory.Build.props ve Directory.Build.targets kullanabilirsiniz. Bkz . Klasöre göre özelleştirme. Ayrıca, C++ projeleri aşağıdaki genişletilebilirlik noktalarını sağlar. Microsoft.Cpp.* dosyaları öncesinde veya .targets sonrasında otomatik olarak içeri aktarılacak veya dosyaları belirtmek .props için özellikleri kullanabilirsiniz:

  • ForceImportAfterCppDefaultProps
  • ForceImportBeforeCppProps
  • ForceImportAfterCppProps
  • ForceImportBeforeCppTargets
  • ForceImportAfterCppTargets

Bu içeri aktarmalar, diğer özelliklere veya diğer hedeflere bağlı hedeflere bağlı olan özelliklerin tanımlarının sırası üzerinde denetim sağlar. içindeki içeri aktarmaların .vcxproj sırası şöyle görünür:

   vcxproj
      Microsoft.Cpp.default.props
         Microsoft.Common.props
            Directory.Build.props
      Microsoft.Cpp.props
      Microsoft.Cpp.targets
         Targets
            Directory.Build.targets

Bkz. .vcxproj ve .props dosya yapısı. Microsoft.Cpp.default.props veya Microsoft.Cpp.props içinde tanımlanan diğer özellikleri kullanan özellikleri tanımlamanız gerekiyorsa, başka bir .props dosya (örneğin, MyProps.props) oluşturabilir ve özelliği Directory.Build.props buna işaret ederek tanımlayabilirsinizForceImportAfterCppProps:

<PropertyGroup>
  <ForceImportAfterCppProps>$(MSBuildThisFileDirectory)\MyProps.props</ForceImportAfterCppProps>
</PropertyGroup>

MyProps.props, Microsoft.Cpp.props dosyasının en sonunda otomatik olarak içeri aktarılır.

Tüm C++ derlemelerini özelleştirme

Bu tür özelleştirmeleri izlemek kolay olmadığından Visual Studio yüklemesini özelleştirmek önerilmez, ancak Visual Studio'yu belirli bir platform için C++ derlemelerini özelleştirmek üzere genişletiyorsanız, her platform için dosya oluşturabilir .targets ve visual studio uzantısının bir parçası olarak bu platformlar için uygun içeri aktarma klasörlerine yerleştirebilirsiniz.

.targets Win32 platformu microsoft.Cpp.Win32.targets dosyası aşağıdaki Import öğeyi içerir:

<Import Project="$(VCTargetsPath)\Platforms\Win32\ImportBefore\*.targets"
        Condition="Exists('$(VCTargetsPath)\Platforms\Win32\ImportBefore')"
/>

Aynı dosyanın sonuna yakın benzer bir öğe vardır:

<Import Project="$(VCTargetsPath)\Platforms\Win32\ImportAfter\*.targets"
        Condition="Exists('$(VCTargetsPath)\Platforms\Win32\ImportAfter')"
/>

*%ProgramFiles32%\MSBuild\Microsoft.Cpp\v{version}\Platforms* içindeki diğer hedef platformlar için de benzer içeri aktarma öğeleri var.

Dosyayı platforma .targets göre uygun ImportAfter klasöre yerleştirdikten sonra, MSBuild dosyanızı bu platform için her C++ derlemesine aktarır. Gerekirse oraya birden çok .targets dosya yerleştirebilirsiniz.

Visual Studio Genişletilebilirliği'ni kullanarak yeni bir platform tanımlama gibi daha fazla özelleştirme yapılabilir. Daha fazla bilgi için bkz . C++ proje genişletilebilirliği.

Komut satırında özel içeri aktarma belirtme

C++ projesinin belirli bir derlemesine eklemek istediğiniz özel .targets için, özelliklerden ForceImportBeforeCppTargets birini veya her ikisini de ForceImportAfterCppTargets komut satırına ayarlayın.

msbuild /p:ForceImportBeforeCppTargets="C:\build\config\Custom.Before.Microsoft.Cpp.Targets" MyCppProject.vcxproj

Genel bir ayar için (örneğin, derleme sunucusundaki bir platform için tüm C++ derlemelerini etkilemek için) iki yöntem vardır. İlk olarak, her zaman ayarlanmış bir sistem ortam değişkeni kullanarak bu özellikleri ayarlayabilirsiniz. MSBuild ortamı her zaman okuduğundan ve tüm ortam değişkenleri için özellikler oluşturduğundan (veya geçersiz kıldığından) bu teknik çalışır.