Yükleme dizini düzen kuralları

Bu makalede, yükleme dizini için vcpkg tarafından kullanılan düzen kuralları açıklanmaktadır. Yükleme dizini, her paket tarafından yüklenen dosyaları barındırıyor. Bağlantı noktası yazarları paketlerinin bu makalede açıklanan kurallara uygun olduğundan emin olmalıdır.

Klasik modda, yükleme dizini içinde $VCPKG_ROOT/installed bulunur (burada $VCPKG_ROOT vcpkg yükleme yolunuzdur). Bildirim modunda, her bildirim dosyasının karşılık gelen vcpkg_installed bir dizini vardır. Yükleme dizininin konumu seçeneğiyle --x-install-root değiştirilebilir. İşlem modundan bağımsız olarak, yükleme dizininin düzeni aynı kalır.

Yükleme dizini, bir paket ilk kez yüklendiğinde oluşturulur. Yükleme dizini görmüyorsanız önce bazı paketleri yüklemeyi deneyin.

Yükleme dizininin kök düzeyi aşağıdakileri içerir:

  • vcpkg Yüklü paketleri ve dosyaları takip eden bir dizin
  • Her üçlü için bir dizin. Her üçlü dizin, her paket tarafından yüklenen dosyaları içerir.

Üçlü dizinler

Her paket yüklemesinin çıktısı üçlüye özgü bir dizinde yer alır. Örneğin, üçlü için x64-windows yüklenen paketler dizinde installed/x64-windows bulunur.

Her üçlü dizinin içindeki alt dizinlerin düzeni aynıdır:

Not

Bazı paketler burada açıklanan kurallarla eşleşmeyen dosyalar üretebilir. Bağlantı noktası yazarları, oluşturulan dosyaların son konumunu her dosyanın hizmet amacına göre belirlemelidir.

Altdizin Dosya türü
bin Sürüm .dll ve .pdb dosyalar
debug/bin Hata ayıklama .dll ve .pdb dosyalar
debug/lib , , .lib.sove .dylib dosyalarında hata ayıklama .a
debug/lib/manual-link Elle bağlanabilen hata ayıklama .lib, .so, .dylibve .a dosyaları
debug/plugins/<group> Paylaşılan kitaplıklarda çalışma zamanı yükleme hatalarını ayıklama
debug/lib/pkgconfig pkg-config dosyalarında hata ayıklama (.pc)
include Üst bilgi dosyaları (.h, .hpp, .hxx)
lib , .lib.so ve .dylib dosyalarını serbest bırakma .a
lib/manual-link Elle bağlanabilen sürüm .lib, .so, .dylibve .a dosyaları
lib/pkgconfig Pkg-config dosyalarını serbest bırakma (.pc)
plugins/<group> Çalışma zamanı yükleme sürümü paylaşılan kitaplıkları
share/<port> Yapılandırmadan bağımsız ek dosyalar
share/<port>/copyright Paketin lisans metni
share/<port>/usage Derleme sistemi tümleştirme yönergeleri dosyası
share/<port>/usage-accurate Oluşturulan kullanım doğruluğu işaretçisi
share/<port>/vcpkg.spdx.json Oluşturulan yazılım ürün reçetesi
share/<port>/vcpkg-port-config.cmake Bağlantı noktası tanımlı CMake işlevleri ve değişkenleri
share/<lowercase-package>/<package>Config.cmake için CMake tümleştirme dosyaları find_package(package)
share/<cmakepackagename>/vcpkg-cmake-wrapper.cmake CMake find_package(<cmakepackagename>) geçersiz kılma
share/pkgconfig Yapılandırmadan bağımsız pkg-config dosyaları (.pc)
tools/<port> Yürütülebilir araçlar ve destekleyici dosyalar

bin ve debug/bin dizinleri

Windows'da, bu dizinler sırasıyla sürüm ve hata ayıklama yapılandırması için DLL ve PDB dosyaları içerir. Bir bağlantı noktası tarafından üretilen yürütülebilir dosyalar bir tools/<port> dizine taşınmalıdır.

include

Üst bilgi dosyalarını (.h, .hpp, .hxx) içerir. Bu dizinin altındaki düzen, paketin üst bilgi dosyalarının hedeflenen kullanımını yansıtmalıdır. Örneğin, kullanmayı contoso amaçlayan bir #include <contoso/contoso.h> kitaplık üst bilgi dosyasını include/contoso/contoso.hsağlamalıdır.

vcpkg, dizinin köküne bazı ayrılmış üst bilgi dosya adlarının yüklenmesini include yasaklar, örneğin: err.h, user.h, time.hve diğerleri. Yasak üst bilgi dosya adı sağlayan kitaplıklar, üst bilgi dosyalarını bir include/<port> dizine yerleştirmelidir. Kitaplık bir sistem üst bilgisi dosyasını değiştirmeyi planlıyorsa, ilkeyi VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS içinde portfile.cmakeayarlamalıdır.

lib ve debug/lib dizinleri

Statik kitaplıklar, içeri aktarma kitaplıkları (Windows üzerinde) ve paylaşılan kitaplıklar (Windows olmayan) içerir.

El ile bağlanması gereken kitaplıklar içerir.

Otomatik olarak bağlandığında sorunlara neden olabilecek dosyaların dizin yerine klasörlere lib/manual-link yerleştirilmesi lib gerekir. Örneğin, bir kitaplığın bir program için işlevi tanımlaması main() amaçlanıyorsa.

lib/pkgconfig, debug/lib/pkgconfig ve share/pkgconfig dizinleri

pkg-config tümleştirme dosyalarını (.pc içerir. Kitaplık, yapılandırmaya bağımlı ve yapılandırmadan bağımsız dosyaları aynı anda sağlamamalıdır. Örneğin: ve'yi lib/pkgconfig/contoso.pcyüklemeyinshare/pkgconfig/contoso.pc.

plugins/<group> ve debug/plugins/<group>

Uygulamalar kullanılarak çalışma zamanı sırasında yüklenmesi amaçlanacak paylaşılan kitaplıklar içerir.

share/<port>

Her bağlantı noktası tarafından yüklenen çeşitli dosyaları içerir. Örneğin, SPDX dosyaları, betikler vb.

vcpkg, bağlantı noktalarının yüklü paketin lisans bilgilerini içeren bir copyright dosya sağlamasını bekler. Daha fazla bilgi için bakımcı kılavuzuna bakın.

share/<port>/usage

Kitaplığı proje içinde tümleştirme yönergelerini içeren bir metin dosyası. Daha fazla bilgi için paketler için kullanım belgelerini sağlama kılavuzuna bakın.

share/<port>/usage-accurate

vcpkg'nin oluşturulan kullanım bilgilerini onaylayan boş bir işaretçi dosyası doğrudur. Bu dosya yüklendiğinde, vcpkg oluşturulan kullanım bilgilerinden buluşsal uyarıyı atlar. Daha fazla bilgi için kullanım belgeleri kılavuzuna bakın.

share/<port>/vcpkg.spdx.json

Yüklü paket için vcpkg tarafından oluşturulan yazılım ürün reçetesi .

share/<lowercase-package>/<package>Config.cmake, share/<package>/<package>-config.cmake

CMake tümleştirme dosyaları klasörüne yerleştirilmeli share ve CMake'in find_package(package) modunda CONFIG .

Örneğin, bir bağlantı noktası sağlamayı find_package(MyPackage REQUIRED)bekliyorsa veya share/mypackage/MyPackageConfig.cmakesağlamalıdırshare/mypackage/MyPackage-config.cmake.

Bir paket CMake tümleştirme dosyaları sağlıyorsa, vcpkg_cmake_config_fixup() yeniden konumlandırılamayan yolları düzeltmek ve derleme yapılandırmalarını birleştirmek için helper işlevi çağrılmalıdır.

tools/<port>

Önemli

vcpkg, en başta bir C++ kitaplık bağımlılık yöneticisidir. Bağlantı noktası yazarları, yükleme çıkışına araç eklemeye karar verirken özellikle kullanılmalıdır. Örneğin: Hata ayıklama aracı gerekli olmadığında yalnızca bir yayın yürütülebilir dosyası yüklemeyi göz önünde bulundurun.

Yürütülebilir dosyalar çalışma zamanı kullanımına yönelik olduğunda hem yayın hem de hata ayıklama yürütülebilir dosyaları sağlanmalıdır.

Bir bağlantı noktası tarafından üretilen yürütülebilir araçları içerir. Yüklü her yürütülebilir dosyanın, onu üreten bağlantı noktasının adıyla eşleşen bir alt dizine gitmesi kesinlikle önerilir, ancak gerekli değildir. Örneğin, bir contoso bağlantı noktası adresine ContosoGenerator.exeyükleyebilirtools/contoso/ContosoGenerator.exe.

Bazı bağlantı noktaları, yürütülebilirlerinin bir bin alt dizine gitmesini gerektirir ve bu durumda önerilen desen şeklindedir tools/<port>/bin.