코드를 생성하거나 사용자 지정 빌드 시스템을 구현하기 위해 다른 포트에서 빌드 시 사용하는 도구는 vcpkg 내에 패키지할 수 있습니다.
소모
포트를 도구로 사용하는 경우 종속성 "host" 필드를 true로 설정해야 합니다. 예시:
{
"name": "contoso-http-library",
"version-string": "1.0.0",
"description": "Contoso's http runtime library",
"dependencies": [
"contoso-core-library",
{
"name": "contoso-code-generator",
"host": true
},
{
"name": "contoso-build-system",
"host": true
}
]
}
이 경우 contoso-code-generator contoso-build-system 빌드되기 전에 contoso-http-library 호스트 트리플렛에 대한 및(모든 전이적 종속성 포함) 빌드 및 설치됩니다.
참고 항목
소비자는 메타데이터 형식 대신 CONTROL 사용해야 vcpkg.json 합니다. 를 사용하여 vcpkg format-manifest /path/to/CONTROL기존 CONTROL 파일을 쉽게 변환할 수 있습니다.
그런 다음, 소비자의 포트파일 내에서(contoso-http-library 예제에서) CMake 변수 CURRENT_HOST_INSTALLED_DIR 가 정의 installed/<host-triplet> 되고 필요한 자산을 찾는 데 사용해야 합니다. 이 예제 contoso-code-generator 에서는 다음을 통해 소비자가 로컬 경로에 추가할 항목을 설치했을 tools/contoso-code-generator/ccg.exe 수 있습니다.
# ports/contoso-http-library/portfile.cmake
vcpkg_add_to_path(${CURRENT_HOST_INSTALLED_DIR}/tools/contoso-code-generator)
호스트 삼중자 지정
기본 호스트 삼중항은 호스트 아키텍처 및 운영 체제(예x64-windows: 또는 x64-linuxx64-osx.)에 따라 선택됩니다. 다음을 통해 재정의할 수 있습니다.
- CMake 기반 매니페스트 모드에서 첫 번째
project()지시문 앞에 호출set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "") - MSBuild 기반 매니페스트 모드에서 속성 설정
VcpkgHostTriplet - 명령줄에서 플래그를 통해
--host-triplet=... VCPKG_DEFAULT_HOST_TRIPLET환경 변수
생산
도구를 생성하는 데는 특별한 요구 사항이 없습니다. 도구는 모든 일반적인 정책과 관행에 따라 표준 포트로 작성되어야 합니다. 특히 포트파일의 컨텍스트 내에 있지 않고 HOST_TRIPLET 빌드해야 합니다TARGET_TRIPLET.
현재 컨텍스트가 교차 컴파일되는 경우(TARGET_TRIPLET 그렇지 않음 HOST_TRIPLET) VCPKG_CROSSCOMPILING 진실 값으로 설정됩니다.
if(VCPKG_CROSSCOMPILING)
# This is a native build
else()
# This is a cross build
endif()
호스트 전용 포트
일부 포트는 호스트 종속성을 통해서만 종속되어야 합니다. 스크립트 포트 및 도구 포트가 일반적인 예입니다. 이 경우 지원 식을 사용하여 "native" 이를 설명할 수 있습니다. 이는 false일 때 VCPKG_CROSSCOMPILING 식이 true임을 지원합니다(이를 TARGET_TRIPLET == HOST_TRIPLET의미함).
VCPKG_USE_HOST_TOOLS
vcpkg CMAKE_PROGRAM_PATH에서 빌드한 실행 파일을 에 추가하려면 이 CMake 옵션을 설정합니다.
빌드 프로세스 중에 사용할 수 있도록 합니다.
이 옵션을 적용하려면 파일에서 CMakeLists.txt 호출 project() 하기 전에 설정해야 합니다. VCPKG_HOST_TRIPLET 변수도 설정해야 합니다.
호스트 트리플렛의 폴더에 tools 설치된 도구만 에 추가CMAKE_PROGRAM_PATH됩니다.
실제로 다음 위치가 추가됩니다.
${VCPKG_INSTALLED_DIR}/${VCPKG_HOST_TRIPLET}/tools${VCPKG_INSTALLED_DIR}/${VCPKG_HOST_TRIPLET}/tools/*/bin
vcpkg