Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
vcpkg, Microsoft ve Windows, macOS ve Linux üzerinde çalışan C++ topluluğu tarafından yönetilen ücretsiz ve açık kaynaklı bir C/C++ paket yöneticisidir. Bu bir C++ aracıdır ve C++ ve CMake betikleri kullanılarak yazılır. C/C++ kitaplıklarını yönetme ile benzersiz sorun noktalarına çözüm getirmek için tasarlanmıştır.
Neden vcpkg?
- Abi uyumluluğunu doğrulamak için düzenli olarak oluşturulmuş, seçebileceğiniz 2300'den fazla açık kaynak kitaplık
- Kendi özel kitaplık paketlerinizle kendi özel kitaplık kayıt defterinizi oluşturma
- Windows, macOS ve Linux için tutarlı, platformlar arası deneyim
- Herhangi bir derleme ve proje sistemiyle projenize kolayca kitaplık ekleme
- Varsayılan olarak 70'ten fazla yapılandırma ve özel gereksinimleriniz için sonsuz özelleştirme ile kaynaktan bağımlılıklar oluşturun veya önceden oluşturulmuş ABI ile doğrulanmış ikili dosyaları indirin
- Benzersiz bir sürüm oluşturma tasarımıyla bağımlılıklarınız arasında sürüm çakışmalarını ve baklava sorunlarını önleme
- MSBuild ve CMake kullanıcıları için: Sorunsuz bir bağımlılık alma deneyimi için derleme ortamınızla otomatik tümleştirme
- En büyük kuruluşlardan bazıları dahil olmak üzere öğrenciler, açık kaynak geliştiriciler, hobi uzmanları ve profesyoneller tarafından güvenilen
vcpkg özellikleri
Bağlantı noktaları ve üçlüler
Vcpkg bağlantı noktası , paket üreten sürüme sahip bir derleme tarifidir. En yaygın paket türü üst bilgi, kaynak kod ve ikili dosyalardan oluşan bir C/C++ kitaplığıdır.
Üçlü, hedef derleme ortamını (cpu, işletim sistemi, derleyici, çalışma zamanı vb.) tek ve kullanışlı bir adla yakalar. vcpkg varsayılan olarak 70'ten fazla üçlü sağlar, ancak kendi üçlünüzü de tanımlayabilirsiniz.
Sisteminize bir paket yüklemek için vcpkg, bağlantı noktasının CMake betiği olan tarif dosyasını çalıştırır. Betik, kaynak kodu indirme veya sisteminizde bir derleme çalıştırma adımlarını içerebilir. Derlemeler sırasında vcpkg, üretilen paketin istediğiniz yapılandırmayla eşleştiğinden emin olmak için üçlünüzdeki bilgileri kullanır.
İkili önbelleğe alma
vcpkg gerektiğinde kaynaktan kitaplıklar oluştururken, yerleşik paketlerinizi ikili önbellekte yedekleyebilirsiniz. Bu, diğer geliştirici makinelerinin veya sürekli tümleştirme çalıştırmalarının her seferinde yeni bir derleme çalıştırmadan bu önceden oluşturulmuş paketlere başvurmasını sağlar. vcpkg, önbelleğin zaten uygun ikili dosyalar içeren geçerli bir mevcut paket içerip içermediğini denetleyerek yeniden derlemenin gerekli olup olmadığını belirler.
Bildirim
Doğrudan bağımlılıklarınızı bildirebilir ve bildirim dosyasına isteğe bağlı özellikler veya sürüm kısıtlamaları ekleyebilirsiniz. Bildirim dosyaları kaynak denetim sisteminizde denetlenebilir ve ekibinizle paylaşılabilir.
Sürüm oluşturma
vcpkg, paket sürümlerini işlemenin benzersiz bir yoluna sahiptir. Bildirim dosyanız varsayılan olarak ayarlanan tek bir temel sürüme başvurabilir. Temel, tam yeniden üretilebilirlik ile sorunsuz, çakışmasız bağımlılık yönetimi sağlar. Ayrıca, tek tek paket sürümlerini sabitleyerek daha gelişmiş denetime sahip olabilirsiniz.
Kayıt Defterleri
Kayıt defteri, vcpkg kullanıcısının yükleyebileceği bağlantı noktaları ve kullanılabilir sürümlerden oluşan bir koleksiyondur. vcpkg, varsayılan olarak açık kaynak kitaplıkların seçilmiş bir kayıt defterini sağlar. Özelleştirmeler, düzeltme ekleri veya özel kitaplıklar için kendi kayıt defterlerinizi de oluşturabilirsiniz.
Varlık önbelleğe alma
Varlık önbelleğe alma , vcpkg'nin hava ile eşlenen ve çevrimdışı ortamlarda çalışmasını sağlayarak uzak bir ana bilgisayar bozulsa veya güvenliği ihlal edilmiş olsa bile iş sürekliliğini sağlar. Kaynak kodu ve derleme araçları gibi varlıkları karşıya yüklemek ve geri yüklemek için indirme yansıtmalarını kullanır.
Diğer paket yöneticileriyle karşılaştırıldığında vcpkg
NuGet ile karşılaştırıldığında vcpkg
NuGet, özellikle .NET projeleri içeren MSBuild çözümleri için genellikle C/C++ geliştirme için kullanılan bir .NET paket yöneticisidir. Genel bir kural olarak, Microsoft C++ ekibi, NuGet'in çeşitli sınırlamaları olduğundan C/C++ geliştirmesi için NuGet kullanılmasını önermez:
- Derleme tatları. NuGet anında kaynaktan paketler oluşturamadığından, tüm kullanıcılar için tüm olası Uygulama İkili Arabirimi (ABI) kısıtlamalarıyla eşleşecek şekilde önceden oluşturulmuş ikili dosyalar sağlamak gerekir. Kullanıcı paketleri doğru bir şekilde oluşturmakla sorumludur. ayrıca, ilgili meta verilerin olmaması nedeniyle ikili dosyaları ayırt etmek de zordur. Bu, kullanıcının paket adına mimari, işletim sistemi ve derleyici bilgilerini yerleştirmesine neden olur. Mimari, işletim sistemi ve derleyici bilgilerindeki kısıtlamalar paket alımı sırasında uygulanamadığından bu istenmeyen bir durumdur.
- İkili ve kaynak karşılaştırması. NuGet, nispeten küçük, önceden oluşturulmuş ikili dosyalar sağlamak için sıfırdan tasarlanmıştır. Geliştiricilerin ABI uyumluluğunu, performansını, bütünlüğünü ve hata ayıklanabilirliğini sağlamak için kaynak koda erişmesi gerekir.
-
NuGet PackageReference desteği yok. NuGet PackageReference dosyalar için
.vcxprojdesteklenmez ve C++ ile .NET MSBuild projeleri arasındaki teknik ve mimari farklılıklar nedeniyle gelecekte ekleme planı yoktur. Bu, NuGet C++ kullanıcılarının genel önbelleğin kullanımı ve koşullu mantığa erişimi olan basit MSBuild terimlerinde bağımlılıklara başvurma gibi özelliklerden yararlanmayacağı anlamına gelir. - Geçişli ABI izleme. vcpkg, belirli bir paketteki bir değişiklik tarafından etkilenen açık kaynak bağımlılıklarını yeniden oluşturur. Örneğin, Boost için yeni bir güncelleştirme yayınlanırsa, vcpkg hala çalıştığından emin olmak için Boost'un tüm bağımlılıklarını ve Boost'a bağlı kitaplıkları yeniden oluşturur. Derleme zamanı çakışmaları giderilene kadar vcpkg deposundaki kitaplıkları güncelleştirmeye yönelik çekme istekleri birleştirilmemiştir.
Sistem paketi yöneticileriyle karşılaştırıldığında vcpkg
Linux, macOS ve Windows için C/C++ kitaplıklarını almak ve yönetmek için kullanılabilecek çok çeşitli sistem paketi yöneticileri vardır. Bu paket yöneticileri genellikle uygulamaları yönetmek için mükemmel seçeneklerdir. Ancak desteklerinin genel yapısı nedeniyle, genellikle özellikle C/C++ geliştiricileri için faydalı özellikler sunamaz. Mesafeniz farklılık gösterse de ve bazı sistem paketi yöneticileri bu özelliklerden bazılarını sunsa da, hiçbiri aşağıdakilerin tümüne sahip değil:
- Yeniden dağıtılabilir geliştirici varlıkları: vcpkg, hata ayıklamaya yardımcı olmak için yeniden dağıtılabilir geliştirici varlıkları alabilir.
- Önceden oluşturulmuş paketler ve kaynaktan derleme: vcpkg, özel gereksinimlerinize göre kaynaktan paketler oluşturabilir. Önceden oluşturulmuş, önceden derlenmiş paketlerin çalışmasını sağlamak için bunlarla ilgilenmeye gerek yoktur.
- Katalog genelinde sürüm oluşturma: vcpkg, tek tek paket sürümlerini mikro yönetmek yerine uyumlu paketlerin bir sürüm kümesine bağımlı olmanıza olanak tanır. Yine de gerektiğinde bunu yapabilirsiniz, ancak varsayılan deneyim kullanmaya başlamak için kolay olacak şekilde tasarlanmıştır.
- Bir sistemde aynı kitaplığın birden çok kopyası: Aynı bağımlılığın birden çok kopyası vcpkg ile aynı sistemde yüklü olabilirken, sistem paketi yöneticileri tek bir sürümü sistem genelindeki tek bir konuma yükleyebilir. Bu, kitaplığın farklı sürümlerine bağlı olarak birden çok projeniz olduğunda işleri karmaşıklaştırır.
- Katalog boyutu: vcpkg C/C++ için özel olduğundan, sistem paketi yöneticilerine kıyasla çok büyük bir C/C++ kitaplık koleksiyonuna sahiptir ve etkin bir şekilde korunur. Genel olarak, C++ geliştirme için kullanışlı ve güncel kitaplıklar bulma olasılığınız daha yüksektir.
- Platformlar arası destek: Sistem paket yöneticileri belirli bir sisteme kilitlenmiş paketler sağlar. Birden fazla işletim sistemi türü hedeflemeniz gerekiyorsa, ikinci sistem için farklı bir paket yöneticisi bulmanız gerekir. Buna karşılık, vcpkg platformlar arası bir paket yöneticisidir. Bu nedenle, hedef derlemelerinizi buna göre ayarlamanız yeterlidir.
Sistem paket yöneticisinin kesinlikle mantıklı olduğu durumlar vardır:
- Sistem paketi yöneticileri, o sisteme özgü kitaplıklar sağlama ve bakımını yapma konusunda iyi bir iş yapma eğilimindedir
- Tüketen projeniz basit bir derleme yapılandırmasına sahipse, önceden oluşturulmuş paketlerin bu sistemde kullanıma hazır olması gerekir.
- Platformlar arası geliştirme yapmayı düşünmüyorsanız, bir sistem paketi yöneticisiyle işletim sistemi uyumluluk sorunlarıyla karşılaşmazsınız.
vcpkg, sistem paketi yöneticileriyle yan yana çalışacak şekilde tasarlanmıştır, bu nedenle her bağımlılık için size en mantıklı olan aracı kullanmaktan çekinmeyin.
vcpkg kullanmaya başlama
vcpkg'yi denemek için giriş niteliğindeki öğreticilerimize göz atın:
- CMake ile paketleri yükleme ve kullanma
- Visual Studio'da CMake ile paketleri yükleme ve kullanma
- Visual Studio'da MSBuild ile paketleri yükleme ve kullanma
- Visual Studio Code'da CMake ile paketleri yükleme ve kullanma
- Kitaplığı vcpkg ile paketleme
- Vcpkg tarafından seçilen kayıt defterine bağlantı noktası ekleme
Derleme sisteminiz CMake veya MSBuild değilse, vcpkg tercih ettiğiniz ortamla el ile tümleştirmeyi de destekler.