Aracılığıyla paylaş


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.

Alt Dosya türü
bin Sürüm .dll ve .pdb dosyalar
debug/bin Hata ayıklama .dll ve .pdb dosyalar
debug/lib , , .so.dylibve .a dosyalarında hata ayıklama .lib
debug/lib/manual-link Elle bağlanabilen hata ayıklama .lib, .so, .dylibve .a dosyaları
debug/plugins/<group> Çalışma zamanı yükleme hata ayıklama .dll dosyaları
debug/lib/pkgconfig pkgconfig dosyalarında hata ayıklama (.pc)
include Üst bilgi dosyaları (.h, .hpp, .hxx)
lib , .so.dylib ve .a dosyalarını serbest bırakma .lib
lib/manual-link Elle bağlanabilen sürüm .lib, .so, .dylibve .a dosyaları
lib/pkgconfig Pkgconfig dosyaları (.pc)
plugins/<group> Çalışma zamanı yükleme sürüm .dll dosyaları
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>/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 pkgconfig dosyaları (.pc)
tools/<port> Yürütülebilir araçlar

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ı #include <contoso/contoso.h> amaçlayan bir contoso 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 yerleştirilmesi lib/manual-link 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

pkgconfig 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 share/pkgconfig/contoso.pcyüklemeyinlib/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/<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/MyPackage-config.cmakesağlamalıdırshare/mypackage/MyPackageConfig.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.

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 tools/contoso/ContosoGenerator.exeyükleyebilirContosoGenerator.exe.

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