C++ derlemelerini özelleştirme
C++ projeleri için özel .targets
ve .props
dosyalar, varsayılan ayarları geçersiz kılmak için aynı şekilde kullanılamaz. Bu makalede, C++ derlemeleri için çalışan derlemeyi özelleştirmenin farklı bir yolu açıklanmaktadır.
.NET projelerini özelleştirmek için yararlı olan Directory.Build.props dosyası, içinde içeri aktarılan Microsoft.Common.props tarafından içeri aktarılırkenMicrosoft.Cpp.Default.props
, varsayılanların çoğu Microsoft.Cpp.props içinde tanımlanır ve birçok özellik için "henüz tanımlanmamışsa" koşulu kullanılamaz, çünkü özellik zaten tanımlanmıştır, ancak ile tanımlanan Label="Configuration"
PropertyGroup
belirli proje özellikleri için varsayılanın farklı olması gerekir (bkz. .vcxproj ve .props dosya yapısı).
C++ projelerde, Microsoft.Cpp.* dosyalarından önce/sonra otomatik olarak içeri aktarılacak dosyaları belirtmek .props
için aşağıdaki özellikleri kullanabilirsiniz:
- ForceImportAfterCppDefaultProps
- ForceImportBeforeCppProps
- ForceImportAfterCppProps
- ForceImportBeforeCppTargets
- ForceImportAfterCppTargets
Tüm C++ derlemelerinde özelliklerin varsayılan değerlerini özelleştirmek için başka bir .props
dosya (örneğin, MyProps.props) oluşturun ve özelliği ona işaret eden olarak Directory.Build.props
tanımlayınForceImportAfterCppProps
:
<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.
İlgili içerik
- Derlemenizi özelleştirin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin