Esercitazione: Installare una dipendenza da un registro basato su Git
vcpkg usa un concetto denominato registri per gestire i repository di pacchetti. Per impostazione predefinita, vcpkg trova librerie dal Registro di sistema pubblico curato in https://github.com/Microsoft/vcpkg. È possibile aggiungere registri di terze parti o privati per rendere disponibili altri pacchetti da installare.
Per informazioni sulla creazione di registri personalizzati, vedere l'esercitazione per pubblicare pacchetti in un registro.
I registri vengono configurati usando un vcpkg-configuration.json
file.
In questa esercitazione si apprenderà come:
Prerequisiti
- Un terminale
- Un compiiler C++
- vcpkg
- CMake
1 - Creare un progetto
In una nuova cartella creare i file di progetto seguenti:
Un file di origine (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;
}
Un file di progetto 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 - Creare il manifesto e i file di configurazione
Esegui questo comando:
vcpkg new --application
Il new
commmand crea due file: un file manifesto (vcpkg.json
) e un file di configurazione(vcpkg-configuration.json
). In genere, il comando richiede che vengano forniti gli --name
argomenti e --version
, ma poiché questa esercitazione è un'applicazione dell'utente finale, viene invece usata l'opzione --application
.
I file generati avranno il contenuto seguente:
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"
}
]
}
Il file di configurazione generato include due definizioni del Registro di sistema. Che default-registry
punta al registro vcpkg curato in https://github.com/Microsoft/vcpkg, usando il commit più recente come baseline e un registro aggiuntivo "artifacts"
, che ai fini di questa esercitazione non è necessario e può essere eliminato.
3 - Aggiungere registri privati al file di configurazione vcpkg
Il codice sorgente fa riferimento a due librerie che non sono disponibili nel Registro di sistema curato vcpkg. Per soddisfare queste dipendenze, è necessario aggiungere https://github.com/microsoft/vcpkg-docs come registro aggiuntivo.
Modificare il contenuto di vcpkg-configuration.json
in:
{
"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" ]
}
]
}
Il file di configurazione aggiunge un registro esterno come origine per i beicode
pacchetti e beison
. I registri aggiuntivi devono dichiarare in modo esplicito i pacchetti forniti usando l'elenco "packages"
. Quando vcpkg risolve i nomi dei pacchetti in un registro, per impostazione predefinita qualsiasi nome di pacchetto non trovato in un registro aggiuntivo verrà impostato su "default-registry"
. Altre informazioni sulla risoluzione dei nomi dei pacchetti sono disponibili nella documentazione dei registri.
4 - Installare pacchetti da un registro
Dopo aver aggiunto un registro al file di configurazione, non è necessario eseguire alcuna operazione speciale per installare i pacchetti da esso. vcpkg risolverà in modo trasparente i nomi dei pacchetti nel vcpkg.json
registro corretto quando si seguono i normali macchinari di installazione.
Aggiungere le beicode
dipendenze e beison
nel vcpkg.json
file:
vcpkg add port beicode beison
Compilare ed eseguire il progetto (sostituire $VCPKG_ROOT
con il percorso di installazione vcpkg):
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
cmake --build build
Eseguire il programma, l'output dovrebbe essere simile al seguente:
{
"name": "demo"
}
Passaggi successivi
- Bloccare le versioni per le build ripetibili usando il controllo delle versioni
- Riutilizzare i file binari nelle esecuzioni di integrazione locale o continua usando la memorizzazione nella cache binaria
- Gestire le librerie private usando registri personalizzati