오버레이 포트
일반적으로 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에 대한 시스템 패키지 관리자 종속성을 사용하려면 블로그 게시물을 참조하세요.
vcpkg