호스트 종속성
코드를 생성하거나 사용자 지정 빌드 시스템을 구현하기 위해 다른 포트에서 빌드 시 사용하는 도구는 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-linux
x64-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