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 |
, , .so .dylib ve .a dosyalarında hata ayıklama .lib |
debug/lib/manual-link |
Elle bağlanabilen hata ayıklama .lib , .so , .dylib ve .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 , .dylib ve .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.h
sağ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.h
ve 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.cmake
ayarlamalı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.
lib/manual-link
ve debug/lib/manual-link
dizinleri
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.pc
yü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.
share/<port>/copyright
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.cmake
sağ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.
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 tools/contoso/ContosoGenerator.exe
yü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
.