Tutorial: Menginstal dependensi dari registri berbasis Git
vcpkg menggunakan konsep yang disebut registri untuk mengelola repositori paket. Secara bawaan, vcpkg menemukan pustaka dari registri publik terkurasi di https://github.com/Microsoft/vcpkg. Anda dapat menambahkan registri pihak ketiga atau privat untuk membuat paket tambahan tersedia untuk diinstal.
Untuk informasi tentang membuat registri Anda sendiri, bacalah panduan untuk menerbitkan paket ke registri.
Registri dikonfigurasi menggunakan file vcpkg-configuration.json
.
Dalam tutorial ini, Anda akan belajar untuk:
Prasyarat
- Terminal
- Kompiler C++
- vcpkg
- CMake
1 - Membuat proyek
Di folder baru, buat file proyek berikut:
File sumber (main.cpp
):
#include <iostream>
#include <beison.h>
int main()
{
beison::Object obj;
obj.insert("name", beison::Value::string("demo"));
std::cout << beison::stringify(obj) << std::endl;
return 0;
}
File proyek CMake (CMakeLists.txt
):
cmake_minimum_required(VERSION 3.18)
project(demo CXX)
add_executable(main main.cpp)
find_package(beicode CONFIG REQUIRED)
find_package(beison CONFIG REQUIRED)
target_link_libraries(main PRIVATE beicode::beicode beison::beison)
2 - Membuat file manifes dan konfigurasi
Jalankan perintah berikut:
vcpkg new --application
Commmand new
membuat dua file: file manifes (vcpkg.json
) dan file configuration(vcpkg-configuration.json
). Biasanya, perintah memerlukan argumen --name
dan --version
untuk disediakan, tetapi karena tutorial ini adalah aplikasi pengguna akhir, kami menggunakan opsi --application
sebagai gantinya.
File yang dihasilkan akan memiliki konten berikut:
vcpkg.json
{}
vcpkg-configuration.json
{
"default-registry": {
"kind": "git",
"baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
"repository": "https://github.com/microsoft/vcpkg"
},
"registries": [
{
"kind": "artifact",
"location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
"name": "microsoft"
}
]
}
File konfigurasi yang dihasilkan mencakup dua definisi registri.
default-registry
yang menunjuk ke registri vcpkg yang dikurasi di https://github.com/Microsoft/vcpkg, menggunakan commit terbaru sebagai baseline , dan registri "artifacts"
tambahan, yang untuk tujuan tutorial ini tidak perlu dan dapat dihapus.
3 - Menambahkan registri privat ke file konfigurasi vcpkg Anda
Kode sumber mereferensikan dua pustaka yang tidak tersedia di registri yang dikurasi vcpkg. Untuk memenuhi dependensi ini, kita perlu menambahkan https://github.com/microsoft/vcpkg-docs sebagai registri tambahan.
Ubah konten vcpkg-configuration.json
menjadi:
{
"default-registry": {
"kind": "git",
"baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
"repository": "https://github.com/microsoft/vcpkg"
},
"registries": [
{
"kind": "git",
"repository": "https://github.com/microsoft/vcpkg-docs",
"reference": "vcpkg-registry",
"baseline": "768f6a3ad9f9b6c4c2ff390137690cf26e3c3453",
"packages": [ "beicode", "beison" ]
}
]
}
File konfigurasi menambahkan registri eksternal sebagai sumber untuk paket beicode
dan beison
. Registri tambahan harus secara eksplisit menyatakan paket yang mereka sediakan menggunakan daftar "packages"
. Ketika vcpkg menyelesaikan nama paket ke registri, nama paket apa pun yang tidak ditemukan dalam registri tambahan akan default ke "default-registry"
. Pelajari selengkapnya tentang resolusi nama paket dalam dokumentasi registri.
4 - Menginstal paket dari registri
Setelah registri ditambahkan ke file konfigurasi, tidak ada yang perlu dilakukan khusus untuk menginstal paket darinya. vcpkg akan secara transparan menyelesaikan nama paket di vcpkg.json
Anda ke registri yang benar saat mengikuti mesin penginstalan biasa.
Tambahkan dependensi beicode
dan beison
dalam file vcpkg.json
Anda:
vcpkg add port beicode beison
Bangun dan jalankan proyek (ganti $VCPKG_ROOT
dengan jalur penginstalan vcpkg Anda):
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
cmake --build build
Jalankan program, output akan terlihat seperti ini:
{
"name": "demo"
}
Langkah berikutnya
- Mengunci versi Anda untuk build yang dapat diulang menggunakan penerapan versi
- Gunakan kembali biner di seluruh eksekusi integrasi lokal atau berkelanjutan menggunakan penembolokan biner
- Mengelola pustaka privat Anda menggunakan registri kustom