Overlay port
Biasanya, port vcpkg diperoleh dari registri . Sangat mungkin bahwa sebagian besar port yang Anda instal berasal dari registri vcpkg resmi di https://github.com/Microsoft/vcpkg. vcpkg memungkinkan Anda menginstal port yang tersedia untuk Anda melalui sistem file, kami memanggil port ini, port overlay.
Port overlay dapat bertindak sebagai pengganti langsung untuk port yang sudah ada atau sebagai port baru yang sebelumnya tidak tersedia di registri . Meskipun menyelesaikan nama paket, port overlay diutamakan.
Port overlay dievaluasi dalam urutan berikut:
- Direktori yang ditentukan dalam baris perintah melalui
--overlay-ports
, atau subdirektori bernama jika direktori tersebut tidak memiliki fileCONTROL
atauvcpkg.json
. - Direktori yang ditentukan dalam file
vcpkg-configuration.json
melaluioverlay-ports
, atau subdirektori yang dinamai jika direktori tersebut tidak memiliki fileCONTROL
atauvcpkg.json
. - Direktori yang ditentukan oleh entri variabel lingkungan
VCPKG_OVERLAY_PORTS
, atau subdirektori bernama jika direktori tersebut tidak memiliki fileCONTROL
atauvcpkg.json
.
Saat menyelesaikan nama port, lokasi pertama yang berisi port overlay yang cocok dipilih.
Menggunakan port overlay
Jika port overlay ditentukan, pertama, vcpkg mencoba memuat direktori tersebut sebagai port. Jika berhasil, direktori itu sendiri diperlakukan sebagai port, dan nama overlay berasal dari file CONTROL
atau vcpkg.json
. Jika tidak, subdirektori dengan nama port overlay akan dipertimbangkan.
Port yang valid berisi portfile.cmake
, dan vcpkg.json
atau CONTROL
.
Misalnya, pertimbangkan struktur direktori berikut:
-
x/vcpkg.json
, bidang"name"
diatur ke"a"
. -
x/portfile.cmake
, instruksi build terkait untuka
. -
x/b/vcpkg.json
, bidang"name"
diatur ke"b"
. -
x/b/portfile.cmake
, instruksi pembuatan terkait untukb
. -
y/c/vcpkg.json
, kolom"name"
diatur ke"c"
. -
y/c/portfile.cmake
, petunjuk pembangunan terkait untukc
. -
y/d/vcpkg.json
, bidang"name"
diatur ke"d"
. -
y/d/portfile.cmake
, instruksi terkait pembangunan untukd
.
vcpkg akan mempertimbangkan port berikut dengan pengaturan berikut:
-
--overlay-ports=x
: Ada satu port dalam overlay ini,a
. Nama ini berasal darivcpkg.json
. Subdirektorib
tidak dipertimbangkan. -
--overlay-ports=x/b
: Ada satu port dalam overlay ini,b
. Nama ini berasal darivcpkg.json
. -
--overlay-ports=y
: Ada dua port dalam overlay ini,c
dand
. Nama mereka berasal dari subdirektoriy
, dan nama yang dinyatakan dalamvcpkg.json
mereka harus cocok, atau kesalahan akan dihasilkan jika vcpkg diminta untuk mempertimbangkanc
ataud
.
Anda dapat menambahkan ke konfigurasi port overlay dengan beberapa cara:
- Baris perintah: Tambahkan satu atau beberapa opsi
--overlay-ports=<directory>
ke baris perintah. -
Manifest: Isi array
"overlay-ports"
divcpkg-configuration.json
. -
variabel lingkungan: Atur
VCPKG_OVERLAY_PORTS
ke daftar yang dipisahkan oleh karakter jalur.
Contoh: Contoh Port Overlay
Mengingat struktur direktori ini:
Direktori overlay bernama team-ports berisi port sqlite3, rapidjson, dan curl. Direktori overlay bernama my-ports berisi port sqlite3 dan rapidjson. Direktori vcpkg berisi registri default.
Lari:
vcpkg install sqlite3 --overlay-ports=my-ports --overlay-ports=team-ports
Untuk menginstal:
-
sqlite3
darimy-ports
Lari:
vcpkg install sqlite3 rapidjson curl \
--overlay-ports=my-ports/rapidjson \
--overlay-ports=vcpkg/ports/curl \
--overlay-ports=team-ports
Untuk menginstal:
-
sqlite3
dariteam-ports
-
rapidjson
darimy-ports
-
curl
darivcpkg/ports
Contoh: Memanfaatkan overlay port untuk mengelola dependensi manajer paket sistem
Untuk menggunakan dependensi manajer paket sistem daripada vcpkg, silakan merujuk pada posting blog kami .