다음을 통해 공유


오버레이 포트

일반적으로 vcpkg 포트는 레지스트리에서 가져옵니다. 설치하는 대부분의 포트는 공식 vcpkg 레지스트리에서 https://github.com/Microsoft/vcpkg제공됩니다. vcpkg를 사용하면 파일 시스템을 통해 사용 가능한 포트를 설치할 수 있습니다. 이러한 포트, 오버레이 포트를 호출합니다.

오버레이 포트는 기존 포트에 대한 드롭인 대체 또는 레지스트리에서 사용할 수 없는 새 포트로 작동할 수 있습니다. 패키지 이름을 확인하는 동안 오버레이 포트가 우선합니다.

오버레이 포트는 다음 순서로 평가됩니다.

  • 명령줄 --overlay-ports에서 지정한 디렉터리 또는 해당 디렉터리에 파일이 없는 CONTROL vcpkg.json 경우 명명된 하위 디렉터리입니다.
  • 디렉터리에 파일이 없거나 파일이 없는 vcpkg-configuration.json CONTROL vcpkg.json 경우 명명된 하위 디렉터리를 통해 overlay-ports파일에 지정된 디렉터리입니다.
  • 환경 변수 항목으로 VCPKG_OVERLAY_PORTS 지정된 디렉터리이거나 해당 디렉터리에 파일이 없는 CONTROL vcpkg.json 경우 명명된 하위 디렉터리입니다.

포트 이름을 확인할 때 일치하는 오버레이 포트를 포함하는 첫 번째 위치가 선택됩니다.

오버레이 포트 사용

오버레이 포트가 지정된 경우 먼저 vcpkg는 해당 디렉터리를 포트로 로드하려고 시도합니다. 성공하면 디렉터리 자체는 포트로 처리되고 오버레이의 이름은 또는 vcpkg.json 파일에서 CONTROL 파생됩니다. 그렇지 않으면 오버레이 포트 이름을 가진 하위 디렉터리가 고려됩니다.

유효한 포트에는 portfile.cmake둘 중 하나 vcpkg.json 또는 CONTROL.

예를 들어 다음 디렉터리 구조를 고려합니다.

  • x/vcpkg.json필드가 . "name" 로 설정됩니다 "a".
  • x/portfile.cmake에 대한 a연결된 빌드 지침입니다.
  • x/b/vcpkg.json필드가 . "name" 로 설정됩니다 "b".
  • x/b/portfile.cmake에 대한 b연결된 빌드 지침입니다.
  • y/c/vcpkg.json필드가 . "name" 로 설정됩니다 "c".
  • y/c/portfile.cmake에 대한 c연결된 빌드 지침입니다.
  • y/d/vcpkg.json필드가 . "name" 로 설정됩니다 "d".
  • y/d/portfile.cmake에 대한 d연결된 빌드 지침입니다.

vcpkg는 다음 설정에 따라 다음 포트를 고려합니다.

  • --overlay-ports=x: 이 오버레이에는 하나의 포트가 a있습니다. 이름은 .에서 vcpkg.json파생됩니다. 하위 디렉터리가 b 고려되지 않습니다.
  • --overlay-ports=x/b: 이 오버레이에는 하나의 포트가 b있습니다. 이름은 .에서 vcpkg.json파생됩니다.
  • --overlay-ports=y: 이 오버레이 c 에는 두 개의 포트와 d. 해당 이름은 해당 하위 디렉터리y에서 파생되며 해당 이름에 vcpkg.json 선언된 이름은 일치해야 합니다. 그렇지 않으면 vcpkg를 고려하거나 d고려해야 c 하는 경우 오류가 생성됩니다.

다음과 같은 여러 가지 방법으로 오버레이 포트 구성에 추가할 수 있습니다.

  • 명령줄: 명령줄에 하나 이상의 --overlay-ports=<directory> 옵션을 추가합니다.
  • 매니페스트: 에서 배열 vcpkg-configuration.json채우기 "overlay-ports"
  • 환경 변수: 경로 문자로 구분된 목록으로 설정합니다 VCPKG_OVERLAY_PORTS .

예: 오버레이 포트 예제

이 디렉터리 구조가 지정된 경우:

여러 오버레이 포트 디렉터리를 가진 예제

팀 포트라는 오버레이 디렉터리에는 sqlite3, rapidjson 및 curl 포트가 포함되어 있습니다. my-ports라는 오버레이 디렉터리에는 sqlite3 및 rapidjson 포트가 포함됩니다. vcpkg 디렉터리에는 기본 레지스트리가 포함되어 있습니다.

다음을 실행합니다.

vcpkg install sqlite3 --overlay-ports=my-ports --overlay-ports=team-ports

설치하려면 다음을 수행합니다.

  • sqlite3 에서 my-ports

다음을 실행합니다.

vcpkg install sqlite3 rapidjson curl
    --overlay-ports=my-ports/rapidjson
    --overlay-ports=vcpkg/ports/curl
    --overlay-ports=team-ports

설치하려면 다음을 수행합니다.

  • sqlite3 에서 team-ports
  • rapidjson 에서 my-ports
  • curl 에서 vcpkg/ports

예: 오버레이 포트를 사용하여 시스템 패키지 관리자 종속성 사용

vcpkg에 대한 시스템 패키지 관리자 종속성을 사용하려면 블로그 게시물을 참조하세요.