Bagikan melalui


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 file CONTROL atau vcpkg.json.
  • Direktori yang ditentukan dalam file vcpkg-configuration.json melalui overlay-ports, atau subdirektori yang dinamai jika direktori tersebut tidak memiliki file CONTROL atau vcpkg.json.
  • Direktori yang ditentukan oleh entri variabel lingkungan VCPKG_OVERLAY_PORTS, atau subdirektori bernama jika direktori tersebut tidak memiliki file CONTROL atau vcpkg.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 untuk a.
  • x/b/vcpkg.json, bidang "name" diatur ke "b".
  • x/b/portfile.cmake, instruksi pembuatan terkait untuk b.
  • y/c/vcpkg.json, kolom "name" diatur ke "c".
  • y/c/portfile.cmake, petunjuk pembangunan terkait untuk c.
  • y/d/vcpkg.json, bidang "name" diatur ke "d".
  • y/d/portfile.cmake, instruksi terkait pembangunan untuk d.

vcpkg akan mempertimbangkan port berikut dengan pengaturan berikut:

  • --overlay-ports=x: Ada satu port dalam overlay ini, a. Nama ini berasal dari vcpkg.json. Subdirektori b tidak dipertimbangkan.
  • --overlay-ports=x/b: Ada satu port dalam overlay ini, b. Nama ini berasal dari vcpkg.json.
  • --overlay-ports=y: Ada dua port dalam overlay ini, c dan d. Nama mereka berasal dari subdirektori y, dan nama yang dinyatakan dalam vcpkg.json mereka harus cocok, atau kesalahan akan dihasilkan jika vcpkg diminta untuk mempertimbangkan c atau d.

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" di vcpkg-configuration.json.
  • variabel lingkungan: Atur VCPKG_OVERLAY_PORTS ke daftar yang dipisahkan oleh karakter jalur.

Contoh: Contoh Port Overlay

Mengingat struktur direktori ini:

Contoh dengan beberapa direktori port overlay

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 dari my-ports

Lari:

vcpkg install sqlite3 rapidjson curl \
    --overlay-ports=my-ports/rapidjson \
    --overlay-ports=vcpkg/ports/curl \
    --overlay-ports=team-ports

Untuk menginstal:

  • sqlite3 dari team-ports
  • rapidjson dari my-ports
  • curl dari vcpkg/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 .