Share via


호스트 종속성

코드를 생성하거나 사용자 지정 빌드 시스템을 구현하기 위해 다른 포트에서 빌드 시 사용하는 도구는 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-generatorcontoso-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.)에 따라 선택됩니다. 다음을 통해 재정의할 수 있습니다.

  1. CMake 기반 매니페스트 모드에서 첫 번째 project() 지시문 앞에 호출 set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "")
  2. MSBuild 기반 매니페스트 모드에서 속성 설정 VcpkgHostTriplet
  3. 명령줄에서 플래그를 통해 --host-triplet=...
  4. 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의미함).