자습서: Git 기반 레지스트리에서 종속성 설치
vcpkg는 레지스트리라는 개념을 사용하여 패키지의 리포지토리를 관리합니다. 기본적으로 vcpkg는 공용 큐레이팅 레지스트리에서 라이브러리를 찾습니다 https://github.com/Microsoft/vcpkg. 타사 또는 프라이빗 레지스트리를 추가하여 추가 패키지를 설치할 수 있도록 할 수 있습니다.
사용자 고유의 레지스트리를 만드는 방법에 대한 자세한 내용은 레지스트리에 패키지를 게시하는 자습서를 참조하세요.
레지스트리는 파일을 사용하여 vcpkg-configuration.json
구성됩니다.
이 자습서에서 다음에 대해 알아봅니다.
- 터미널
- C++ compiiler
- vcpkg
- CMake
새 폴더에서 다음 프로젝트 파일을 만듭니다.
원본 파일(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;
}
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)
다음 명령을 실행합니다.
vcpkg new --application
commmand는 new
매니페스트() 파일과 configuration(vcpkg.json
vcpkg-configuration.json
) 파일이라는 두 개의 파일을 만듭니다. 일반적으로 이 명령을 사용하려면 --name
인수와 --version
인수를 제공해야 하지만 이 자습서는 최종 사용자 애플리케이션이므로 대신 이 옵션을 사용합니다 --application
.
생성된 파일에는 다음과 같은 내용이 포함됩니다.
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"
}
]
}
생성된 구성 파일에는 두 개의 레지스트리 정의가 포함됩니다. default-registry
이 자습서의 목적을 위해 불필요하고 삭제할 수 있는 최신 커밋을 기준으로 사용하는 큐레이팅된 vcpkg https://github.com/Microsoft/vcpkg레지스트리와 추가 "artifacts"
레지스트리를 가리킵니다.
소스 코드는 vcpkg 큐레이팅된 레지스트리에서 사용할 수 없는 두 개의 라이브러리를 참조합니다. 이러한 종속성을 충족하려면 추가 레지스트리로 추가 https://github.com/microsoft/vcpkg-docs 해야 합니다.
다음의 내용을 수정합니다.vcpkg-configuration.json
{
"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" ]
}
]
}
구성 파일은 외부 레지스트리를 및 beison
패키지의 원본 beicode
으로 추가합니다. 추가 레지스트리는 목록을 사용하여 "packages"
제공하는 패키지를 명시적으로 선언해야 합니다. vcpkg가 패키지 이름을 레지스트리로 확인하면 추가 레지스트리에서 찾을 수 없는 모든 패키지 이름은 기본값으로 "default-registry"
설정됩니다. 레지스트리 설명서에서 패키지 이름 확인에 대해 자세히 알아봅니다.
레지스트리가 구성 파일에 추가되면 패키지를 설치하기 위해 특별한 작업을 수행할 필요가 없습니다. vcpkg는 일반적인 설치 기계를 따르는 경우 올바른 레지스트리에 있는 vcpkg.json
패키지 이름을 투명하게 확인합니다.
beicode
파일에 종속성 및 beison
종속성을 추가합니다vcpkg.json
.
vcpkg add port beicode beison
프로젝트를 빌드하고 실행합니다(vcpkg 설치 경로로 대체 $VCPKG_ROOT
).
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
cmake --build build
프로그램을 실행하면 출력은 다음과 같이 표시됩니다.
{
"name": "demo"
}
- 버전 관리를 사용하여 반복 가능한 빌드에 대한 버전 잠금
- 이진 캐싱을 사용하여 로컬 또는 연속 통합 실행에서 이진 파일 다시 사용
- 사용자 지정 레지스트리를 사용하여 프라이빗 라이브러리 관리
vcpkg 피드백
vcpkg은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.