Konvensi tata letak direktori penginstalan

Artikel ini menjelaskan konvensi tata letak yang digunakan oleh vcpkg untuk direktori penginstalan. Direktori penginstalan menyimpan file yang diinstal oleh setiap paket. Penulis port harus memastikan bahwa paket mereka mengikuti konvensi yang dijelaskan dalam artikel ini.

Dalam mode klasik, direktori penginstalan terletak di $VCPKG_ROOT/installed (di mana $VCPKG_ROOT adalah jalur penginstalan vcpkg Anda). Dalam mode manifes, setiap file manifes memiliki direktori yang vcpkg_installed sesuai. Lokasi direktori penginstalan dapat diubah dengan --x-install-root opsi . Terlepas dari mode operasi, tata letak direktori penginstalan tetap sama.

Direktori penginstalan dibuat saat pertama kali paket diinstal, jika Anda tidak melihat direktori penginstalan, coba instal beberapa paket terlebih dahulu.

Tingkat akar direktori penginstalan berisi:

  • vcpkg Direktori yang melacak paket dan file yang diinstal
  • Direktori untuk setiap triplet. Setiap direktori triplet berisi file yang diinstal oleh setiap paket.

Direktori triplet

Output dari setiap penginstalan paket terkandung dalam direktori khusus triplet. Misalnya, paket yang diinstal untuk triplet x64-windows terletak di installed/x64-windows direktori.

Tata letak untuk subdirektori di dalam setiap direktori triplet sama:

Note

Beberapa paket dapat menghasilkan file yang tidak cocok dengan konvensi yang dijelaskan di sini. Penulis port harus menentukan lokasi akhir file yang dihasilkan berdasarkan tujuan yang dilayani setiap file.

Subdirektori Jenis file
bin Rilis .dll dan .pdb file
debug/bin Debug .dll dan .pdb file
debug/lib Debug .lib, .so, .dylib, dan .a file
debug/lib/manual-link Debug .lib, , .so, .dylib, dan .a file yang dapat ditautkan secara manual
debug/plugins/<group> Pustaka bersama debug pemuatan runtime
debug/lib/pkgconfig Men-debug file pkg-config (.pc)
include File header (.h, .hpp, .hxx)
lib Rilis .lib, .so, .dylib dan .a file
lib/manual-link Rilis .lib, , .so.dylib, dan .a file yang dapat ditautkan secara manual
lib/pkgconfig Rilis file pkg-config (.pc)
plugins/<group> Pustaka bersama rilis pemuatan runtime
share/<port> File tambahan yang independen untuk konfigurasi
share/<port>/copyright Teks lisensi untuk paket
share/<port>/usage File instruksi integrasi sistem build
share/<port>/usage-accurate Penanda akurasi penggunaan yang dihasilkan
share/<port>/vcpkg.spdx.json Tagihan materi perangkat lunak yang dihasilkan
share/<port>/vcpkg-port-config.cmake Fungsi dan variabel CMake yang ditentukan port
share/<lowercase-package>/<package>Config.cmake File integrasi CMake untuk find_package(package)
share/<cmakepackagename>/vcpkg-cmake-wrapper.cmake Penimpaan CMake find_package(<cmakepackagename>)
share/pkgconfig File konfigurasi pkg-config independen konfigurasi (.pc)
tools/<port> Alat yang dapat dieksekusi dan file pendukung

bin dan debug/bin direktori

Pada Windows, direktori ini masing-masing berisi file DLL dan PDB untuk konfigurasi rilis dan debug. Setiap file yang dapat dieksekusi yang dihasilkan oleh port harus dipindahkan ke tools/<port> direktori.

include

Berisi file header (.h, .hpp, .hxx). Tata letak di bawah direktori ini harus mencerminkan penggunaan file header paket yang dimaksudkan. Misalnya, contoso pustaka yang ingin digunakan #include <contoso/contoso.h> harus menyediakan file include/contoso/contoso.hheader .

vcpkg melarang penginstalan beberapa nama file header yang dipesan include di akar direktori, misalnya: err.h, , user.htime.h, dan lainnya. Pustaka yang menyediakan nama file header terlarang harus menempatkan file header mereka di dalam include/<port> direktori. Jika pustaka berniat untuk mengganti file header sistem, pustaka harus mengatur VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS kebijakan dalam .portfile.cmake

lib dan debug/lib direktori

Berisi pustaka statis, pustaka impor (pada Windows), dan pustaka bersama (di non-Windows).

Berisi pustaka yang harus ditautkan secara manual.

File yang dapat menyebabkan masalah ketika ditautkan secara otomatis harus ditempatkan di lib/manual-link folder alih-alih lib direktori. Misalnya, jika pustaka dimaksudkan untuk menentukan main() fungsi untuk program.

lib/pkgconfig, debug/lib/pkgconfig dan share/pkgconfig direktori

Berisi file integrasi pkg-config (.pc). Pustaka tidak boleh menyediakan file yang bergantung pada konfigurasi dan independen konfigurasi secara bersamaan. Misalnya: jangan instal lib/pkgconfig/contoso.pc dan share/pkgconfig/contoso.pc.

plugins/<group> dan debug/plugins/<group>

Berisi pustaka bersama yang dimaksudkan untuk dimuat selama runtime dengan menggunakan aplikasi.

share/<port>

Berisi file lain-lain yang diinstal oleh setiap port. Misalnya, file SPDX, skrip, dll.

vcpkg mengharapkan port menyediakan copyright file yang berisi informasi lisensi paket yang diinstal. Lihat panduan pemeliharaan untuk informasi selengkapnya.

share/<port>/usage

File teks dengan instruksi untuk mengintegrasikan pustaka dalam proyek. Lihat panduan untuk menyediakan dokumentasi penggunaan untuk paket untuk informasi selengkapnya.

share/<port>/usage-accurate

File penanda kosong yang menegaskan informasi penggunaan yang dihasilkan vcpkg akurat. Ketika file ini diinstal, vcpkg menghilangkan peringatan heuristik dari informasi penggunaan yang dihasilkan. Lihat panduan dokumentasi penggunaan untuk informasi selengkapnya.

share/<port>/vcpkg.spdx.json

Tagihan perangkat lunak bahan yang dihasilkan oleh vcpkg untuk paket yang diinstal.

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

File integrasi CMake harus ditempatkan di share folder dan mematuhi aturan CMake untuk find_package(package) dalam CONFIG mode.

Misalnya, jika port mengharapkan untuk menyediakan find_package(MyPackage REQUIRED), port harus menyediakan atau share/mypackage/MyPackageConfig.cmakeshare/mypackage/MyPackage-config.cmake.

Jika paket menyediakan file integrasi CMake, vcpkg_cmake_config_fixup() fungsi pembantu harus dipanggil untuk memperbaiki jalur yang tidak dapat direlokasi dan untuk menggabungkan konfigurasi build.

tools/<port>

Important

vcpkg adalah manajer dependensi pustaka C++ pertama dan utama. Penulis port harus disarankan saat memutuskan untuk menyertakan alat dalam output penginstalan. Misalnya: pertimbangkan untuk menginstal hanya rilis yang dapat dieksekusi saat alat debug tidak diperlukan.

Executable rilis dan debug harus disediakan ketika executable ditujukan untuk penggunaan runtime.

Berisi alat yang dapat dieksekusi yang dihasilkan oleh port. Sangat disarankan, tetapi tidak diperlukan, bahwa setiap executable yang diinstal masuk ke subdirektori yang cocok dengan nama port yang menghasilkannya. Misalnya, contoso port mungkin menginstal ContosoGenerator.exe ke tools/contoso/ContosoGenerator.exe.

Beberapa port mengharuskan executable mereka masuk ke bin subdirektori, dalam hal ini pola yang direkomendasikan adalah tools/<port>/bin.