MSBuild projelerinde vcpkg
Tümleştirme yöntemleri
Kullanıcı genelinde tümleştirme
MSBuild projelerinizde vcpkg kullanmak için aşağıdaki komutu çalıştırın:
vcpkg integrate install
KOMUTUNU yalnızca MSBuild tümleştirmesini vcpkg integrate install
ilk kez etkinleştirmek istediğinizde çalıştırmanız gerekir. Bu, mevcut ve gelecekteki tüm projeleriniz için MSBuild tümleştirmesini etkinleştirir.
Birden çok vcpkg örneğiniz varsa, MSBuild içinde hangi vcpkg örneğinin kullanıldığını güncelleştirmek için komutunu kullanabilirsiniz vcpkg integrate install
. MSBuild kullanıcı genelinde tümleştirmeyi kaldırmak için kullanın vcpkg integrate remove
.
Bu tümleştirme yöntemi, vcpkg yüklü paketleri otomatik olarak şu proje özelliklerine ekler: Dizinleri Ekle, Dizinleri Bağla ve Kitaplıkları Bağla. Ayrıca bu, gerekli DLL'lerin derleme çıktı klasörüne kopyalanmasını sağlayan bir derleme sonrası eylemi oluşturur. Bu, Visual Studio 2015 veya daha yeni bir sürümünü kullanan tüm çözümler ve projeler için çalışır.
Kitaplıkların büyük çoğunluğu için yapmanız gereken tek şey budur. Ancak, bazı kitaplıklar yeniden tanımlama main()
gibi çakışan davranışlar gerçekleştirir. Bu çakışan seçeneklerden hangisini istediğinizi proje başına seçmeniz gerektiğinden, bu kitaplıkları bağlayıcı girişlerinize el ile eklemeniz gerekir.
El ile bağlamanın gerekli olduğu bazı örnekler aşağıda verilmiştir (kapsamlı bir liste değildir):
- Gtest , ,
gtest_main
ve sağlargtest
gmock
gmock_main
- SDL2,
SDL2main
- SFML,
sfml-main
- Boost.Test sağlar
boost_test_exec_monitor
Tüm yüklü paketlerinizin tam listesini almak için komutunu çalıştırın vcpkg owns manual-link
.
İçeri aktarma .props
ve .targets
vcpkg, ve scripts/buildsystems/vcpkg.targets
dosyalarını her .vcxproj
birine açıkça içeri aktararak scripts/buildsystems/vcpkg.props
MSBuild projelerine de tümleştirilebilir. Göreli yolları kullanarak bu, vcpkg'nin bir alt modül tarafından kullanılmasına ve çalıştırıldığında git clone
kullanıcılar tarafından otomatik olarak alınmasına olanak tanır.
Bunları çözümünüzdeki her projeye eklemenin en kolay yolu, deponuzun kökünde ve Directory.Build.targets
dosyalarını oluşturmaktırDirectory.Build.props
.
Aşağıdaki örneklerde, deponuzun kökünde oldukları ve alt modülü olduğu microsoft/vcpkg
vcpkg
varsayılır.
Örnek Directory.Build.props
<Project>
<Import Project="$(MSBuildThisFileDirectory)vcpkg\scripts\buildsystems\msbuild\vcpkg.props" />
</Project>
Örnek Directory.Build.targets
<Project>
<Import Project="$(MSBuildThisFileDirectory)vcpkg\scripts\buildsystems\msbuild\vcpkg.targets" />
</Project>
ve Directory.Build.props
hakkında Directory.Build.targets
daha fazla bilgi için resmi MSBuild belgelerinin Derlemenizi özelleştirme bölümüne bakın.
Bağlı NuGet paketi
Not
Bu yaklaşım, başkalarıyla paylaşılmalarını zorlaştırdığından yeni projeler için önerilmez. Taşınabilir, bağımsız nuget paketi için bkz export command
. .
VS projeleri bir NuGet paketi aracılığıyla da tümleştirilebilir. Bu işlem proje dosyasını değiştirir, bu nedenle açık kaynak projeler için bu yaklaşımı önermeyiz.
PS D:\src\vcpkg> .\vcpkg integrate project
Created nupkg: D:\src\vcpkg\scripts\buildsystems\vcpkg.D.src.vcpkg.1.0.0.nupkg
With a project open, go to Tools->NuGet Package Manager->Package Manager Console and paste:
Install-Package vcpkg.D.src.vcpkg -Source "D:/src/vcpkg/scripts/buildsystems"
Not
Oluşturulan NuGet paketi gerçek kitaplıkları içermiyor. Bunun yerine, vcpkg yüklemesi için bir kısayol (veya symlink) gibi davranır ve kitaplıklarda yapılan tüm değişikliklerle (yükleme/kaldırma) "otomatik olarak" güncelleştirilir. NuGet paketini yeniden oluşturmanız veya güncelleştirmeniz gerekmez.
Ortak Yapılandırma
VcpkgEnabled
(Vcpkg kullan)
Bu, proje için vcpkg tümleştirmesini açıkça devre dışı bırakmak için "false" olarak ayarlanabilir
VcpkgConfiguration
(Vcpkg Yapılandırması)
Yapılandırma adlarınız vcpkg'nin doğru tahminde bulunabilir durumda olması için çok karmaşıksa, bu özelliği Release
Debug
vcpkg'ye atayarak hangi kitaplık çeşitlemesini kullanmak istediğinizi açıkça söyleyebilirsiniz.
VcpkgEnableManifest
(Vcpkg Bildirimini Kullan)
Yerel vcpkg.json
bir dosyadan kullanmak için bu özellik olarak ayarlanmalıdırtrue
. olarak ayarlanırsa false
, tüm yerel vcpkg.json
dosyalar yoksayılır.
Bu, şu anda varsayılan olarak false
olarak ayarlanmıştır, ancak gelecekte varsayılan true
olarak olacaktır.
VcpkgTriplet
(Üçlü)
Bu özellik, veya arm64-windows
gibi x64-windows-static
kitaplıkları kullanmak için üçlü öğesini denetler.
Bu açıkça ayarlanmadıysa vcpkg, Visual Studio ayarlarınıza göre doğru üçlüye neden olur. vcpkg yalnızca dinamik kitaplık bağlantısı ve dinamik CRT bağlantısı kullanan üçlüleri çıkarır; statik bağımlılıklar kullanmak veya statik CRT ()/MT
kullanmak istiyorsanız, üçlüleri el ile ayarlamanız gerekir.
MSBuild ayrıntı düzeyinizi Normal veya daha yüksek olarak ayarlayarak otomatik olarak tetiklenmiş üçlünüzü görebilirsiniz:
Kısayol: Ctrl+Q "derleme ve çalıştırma"
Araçlar -> Seçenekler -> Projeler ve Çözümler -> Derleme ve Çalıştırma -> MSBuild projesi derleme çıktı ayrıntısı
Ayrıca bkz. Üçlü
VcpkgHostTriplet
(Konak Üçlü)
Bu, konak bağımlılıklarını çözümlemek için kullanılacak özel bir üçlüye ayarlanabilir.
Ayar kaldırılırsa, varsayılan olarak "yerel" üçlü (x64-windows) kullanılır.
Ayrıca bkz. Konak bağımlılıkları.
VcpkgInstalledDir
(Yüklü Dizin)
Bu özellik, vcpkg'nin kitaplıkları yükleyip tüketeceği konumu tanımlar.
Bildirim modunda, bu varsayılan olarak olarak $(VcpkgManifestRoot)\vcpkg_installed\$(VcpkgTriplet)\
adlandırılır. Klasik modda, bu varsayılan olarak olarak adlandırılır $(VcpkgRoot)\installed\
.
VcpkgApplocalDeps
(Uygulamayı yerel olarak dağıtma DLL'leri)
Bu özellik, vcpkg yüklü ağaçtan proje çıktı dizinine bağımlı DLL'lerin algılanmasını ve kopyalanmasını etkinleştirir veya devre dışı bırakır.
VcpkgXUseBuiltInApplocalDeps
(Yerleşik uygulama yerel dağıtımlarını kullan)
Bu özellik etkinleştirildiğinde, uygulama yerel dll'lerini dağıtırken vcpkg'nin deneysel yerleşik uygulama yerel DLL dağıtım uygulamasını kullanır. Bu özellik kaldırılacak ve yerleşik uygulama artık deneysel olmadığında hiçbir etkisi olmayacaktır.
False olduğunda $(VcpkgApplocalDeps)
bu özelliğin hiçbir etkisi olmaz.
Bildirim modu yapılandırması
MSBuild ile bildirimleri (vcpkg.json
) kullanmak için, önce yukarıdaki tümleştirme yöntemlerinden birini kullanmanız gerekir. Ardından proje dosyanızın üzerine bir vcpkg.json ekleyin (örneğin kaynak deponuzun kökünde) ve özelliğini VcpkgEnableManifest
olarak true
ayarlayın. Bu özelliği Proje Özellikleri>Vcpkg Use Vcpkg>Manifest içindeki IDE aracılığıyla ayarlayabilirsiniz. vcpkg Özellik Sayfasını görmek için IDE'yi yeniden yüklemeniz gerekebilir.
vcpkg, projenizin derlemesi sırasında çalışır ve listelenen bağımlılıkları dosyaya vcpkg_installed/$(VcpkgTriplet)/
bitişik olarak vcpkg.json
yükler; bu kitaplıklar otomatik olarak MSBuild projelerinize eklenir ve bunlara bağlanır.
Bilinen sorunlar
- Visual Studio 2015, ve
vcpkg-configuration.json
dosyalarındakivcpkg.json
düzenlemeleri doğru izlemez ve düzenleme yapılmadığı sürece.cpp
değişikliklere yanıt vermez.
VcpkgAdditionalInstallOptions
(Ek Seçenekler)
Bildirim kullanılırken, bu seçenek temel alınan vcpkg aracı çağırmasına geçirilmesi gereken ek komut satırı bayraklarını belirtir. Bu, henüz başka bir seçenek aracılığıyla kullanıma sunulmamış özelliklere erişmek için kullanılabilir.
VcpkgManifestInstall
(Vcpkg Bağımlılıklarını Yükleme)
Bu özellik, proje derlemesi sırasında otomatik bağımlılık geri yüklemesini devre dışı bırakmak için olarak ayarlanabilir false
. Bağımlılıklar, vcpkg komut satırı aracılığıyla ayrı ayrı el ile geri yüklenmelidir.