Självstudie: Installera ett beroende från ett Git-baserat register
vcpkg använder ett begrepp som kallas register för att hantera lagringsplatser för paket. Som standard hittar vcpkg bibliotek från det offentliga kurerade registret på https://github.com/Microsoft/vcpkg. Du kan lägga till tredjeparts- eller privata register för att göra ytterligare paket tillgängliga för installation.
Information om hur du skapar dina egna register finns i guiden för att publicera paket till ett register.
Register konfigureras med hjälp av en vcpkg-configuration.json
fil.
I den här handledningen lär du dig att:
Förutsättningar
- En terminal
- En C++-compiiler
- vcpkg
- CMake
1 – Skapa ett projekt
Skapa följande projektfiler i en ny mapp:
En källfil (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;
}
En CMake-projektfil (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 – Skapa manifest- och konfigurationsfilerna
Kör följande kommando:
vcpkg new --application
new
commmand skapar två filer: en manifestfil (vcpkg.json
) och en konfigurationsfil(vcpkg-configuration.json
). Vanligtvis kräver kommandot att argumenten --name
och --version
anges, men eftersom den här självstudien är ett slutanvändarprogram använder vi alternativet --application
i stället.
De genererade filerna har följande innehåll:
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"
}
]
}
Den genererade konfigurationsfilen innehåller två registerdefinitioner. Den default-registry
som pekar på det kurerade vcpkg-registret vid https://github.com/Microsoft/vcpkgmed den senaste ändringen som baslinje, och ett ytterligare "artifacts"
-register, vilket i den här självstudien är onödigt och kan tas bort.
3 – Lägga till privata register i konfigurationsfilen för vcpkg
Källkoden refererar till två bibliotek som inte är tillgängliga i det vcpkg-kurerade registret. För att uppfylla dessa beroenden måste vi lägga till https://github.com/microsoft/vcpkg-docs som ytterligare ett register.
Ändra innehållet i vcpkg-configuration.json
till:
{
"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" ]
}
]
}
Konfigurationsfilen lägger till ett externt register som källa för paketen beicode
och beison
. Ytterligare register måste uttryckligen deklarera de paket de tillhandahåller med hjälp av listan "packages"
. När vcpkg mappar paketnamn till ett register, kommer alla paketnamn som inte hittas i ett ytterligare register att använda "default-registry"
som standard. Läs mer om paketnamnmatchning i dokumentationen om register.
4 – Installera paket från ett register
När ett register har lagts till i konfigurationsfilen behöver inget särskilt göras för att installera paket från den. vcpkg kommer automatiskt att lösa paketnamn i din vcpkg.json
till rätt register när du följer den vanliga installationsprocessen.
Lägg till beicode
och beison
beroenden i din vcpkg.json
-fil:
vcpkg add port beicode beison
Skapa och kör projektet (ersätt $VCPKG_ROOT
med installationssökvägen för vcpkg):
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
cmake --build build
Kör programmet. Utdata bör se ut så här:
{
"name": "demo"
}
Nästa steg
- Lås fast dina versioner för reproducerbara byggen med versionshantering
- Återanvända binärfiler i lokala eller kontinuerliga integreringskörningar med binär cachelagring
- Hantera dina privata bibliotek med hjälp av anpassade register