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_mainve sağlar gtestgmockgmock_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 .vcxprojbirine 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 clonekullanı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/vcpkgvcpkgvarsayı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.propshakkı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 ReleaseDebug 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 falseolarak ayarlanmıştır, ancak gelecekte varsayılan true olarak olacaktır.

VcpkgTriplet (Üçlü)

Bu özellik, veya arm64-windowsgibi 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 trueayarlayı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ındaki vcpkg.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.