다음을 통해 공유


설치 디렉터리 레이아웃 규칙

이 문서에서는 설치 디렉터리에 대해 vcpkg에서 사용하는 레이아웃 규칙을 설명합니다. 설치 디렉터리에는 각 패키지에서 설치한 파일이 저장됩니다. 포트 작성자는 패키지가 이 문서에 설명된 규칙을 따르는지 확인해야 합니다.

클래식 모드에서 설치 디렉터리가 $VCPKG_ROOT/installed 위치합니다(vcpkg 설치 경로는 어디에 $VCPKG_ROOT 있음). 매니페스트 모드에서 각 매니페스트 파일에는 해당 vcpkg_installed 디렉터리가 있습니다. 옵션을 사용하여 설치 디렉터리의 위치를 변경할 --x-install-root 수 있습니다. 작업 모드에 관계없이 설치 디렉터리의 레이아웃은 동일하게 유지됩니다.

설치 디렉터리가 표시되지 않으면 패키지가 처음 설치될 때 설치 디렉터리가 만들어집니다. 일부 패키지를 먼저 설치해 봅니다.

설치 디렉터리의 루트 수준에는 다음이 포함됩니다.

Triplet 디렉터리

각 패키지 설치의 출력은 삼중 특정 디렉터리에 포함됩니다. 예를 들어 삼중자용 x64-windows 으로 설치된 패키지는 디렉터리에 있습니다 installed/x64-windows .

각 삼중 디렉터리 내의 하위 디렉터리에 대한 레이아웃은 동일합니다.

참고 항목

일부 패키지는 여기에 설명된 규칙과 일치하지 않는 파일을 생성할 수 있습니다. 포트 작성자는 각 파일이 제공하는 용도에 따라 생성된 파일의 최종 위치를 결정해야 합니다.

하위 디렉터리 파일 형식
bin 릴리스 .dll.pdb 파일
debug/bin 디버그 .dll.pdb 파일
debug/lib 디버그 .lib, .so, .dylib.a 파일
debug/lib/manual-link 수동으로 연결할 수 있는 디버그.lib, .so.dylib.a 파일
debug/plugins/<group> 런타임 로드 디버그 .dll 파일
debug/lib/pkgconfig pkgconfig 파일 디버그(.pc)
include 헤더 파일(.h, .hpp, .hxx)
lib 릴리스.lib, .so.dylib.a 파일
lib/manual-link 수동으로 연결할 수 있는 릴리스.lib, .so.dylib.a 파일
lib/pkgconfig Pkgconfig 파일(.pc)
plugins/<group> 런타임 로드 릴리스 .dll 파일
share/<port> 추가 구성 독립적 파일
share/<port>/copyright 패키지의 라이선스 텍스트
share/<port>/usage 빌드 시스템 통합 지침 파일
share/<port>/vcpkg-port-config.cmake 포트 정의 CMake 함수 및 변수
share/<lowercase-package>/<package>Config.cmake 에 대한 CMake 통합 파일 find_package(package)
share/<cmakepackagename>/vcpkg-cmake-wrapper.cmake CMake find_package(<cmakepackagename>) 재정의
share/pkgconfig 구성 독립적 pkgconfig 파일(.pc)
tools/<port> 실행 도구

bindebug/bin 디렉터리

Windows에서 이러한 디렉터리에는 릴리스 및 디버그 구성을 위한 DLL 및 PDB 파일이 각각 포함됩니다. 포트에서 생성된 모든 실행 파일을 디렉터리로 tools/<port> 이동해야 합니다.

include

헤더 파일(.h, .hpp, .hxx)을 포함합니다. 이 디렉터리 아래의 레이아웃은 패키지 헤더 파일의 의도한 사용량을 반영해야 합니다. 예를 들어 contoso 사용 #include <contoso/contoso.h> 하려는 라이브러리는 헤더 파일을 include/contoso/contoso.h제공해야 합니다.

vcpkg는 디렉터리 루트 include 에 예약된 헤더 파일 이름(예: err.h, user.htime.h및 기타)을 설치하는 것을 금지합니다. 금지된 헤더 파일 이름을 제공하는 라이브러리는 해당 헤더 파일을 디렉터리 내에 include/<port> 배치해야 합니다. 라이브러리가 시스템 헤더 파일을 바꾸려는 경우 해당 정책에서 portfile.cmake정책을 설정 VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS 해야 합니다.

libdebug/lib 디렉터리

정적 라이브러리, 가져오기 라이브러리(Windows) 및 공유 라이브러리(Windows가 아닌 경우)를 포함합니다.

수동으로 연결해야 하는 라이브러리를 포함합니다.

자동으로 연결될 때 문제가 발생할 수 있는 파일은 lib/manual-link 디렉터리 대신 폴더에 lib 배치해야 합니다. 예를 들어 라이브러리가 프로그램의 함수를 정의 main() 하기 위한 경우입니다.

lib/pkgconfigshare/pkgconfigdebug/lib/pkgconfig 디렉터리

pkgconfig 통합 파일(.pc)을 포함합니다. 라이브러리는 구성 종속 파일과 구성 독립적 파일을 동시에 제공하지 않아야 합니다. 예를 들어 설치 lib/pkgconfig/contoso.pc 하지 마세요.share/pkgconfig/contoso.pc

plugins/<group>debug/plugins/<group>

애플리케이션을 사용하여 런타임 중에 로드할 공유 라이브러리를 포함합니다.

share/<port>

각 포트에 의해 설치된 기타 파일을 포함합니다. 예를 들어 SPDX 파일, 스크립트 등이 있습니다.

vcpkg는 포트가 설치된 패키지의 라이선스 정보를 포함하는 파일을 제공할 copyright 것으로 예상합니다. 자세한 내용은 유지 관리자 가이드를 참조하세요.

share/<port>/usage

프로젝트 내에서 라이브러리를 통합하는 지침이 포함된 텍스트 파일입니다. 자세한 내용은 패키지에 대한 사용 설명서를 제공하려면 가이드를 참조하세요.

share/<lowercase-package>/<package>Config.cmake, share/<package>/<package>-config.cmake

CMake 통합 파일을 폴더에 share 배치하고 CMake의 규칙을 준수해야 합니다. find_package(package)모드에서 CONFIG

예를 들어 포트가 제공 find_package(MyPackage REQUIRED)되어야 하는 경우 제공하거나 제공해야 share/mypackage/MyPackageConfig.cmake share/mypackage/MyPackage-config.cmake합니다.

패키지가 CMake 통합 파일을 제공하는 경우 vcpkg_cmake_config_fixup() 도우미 함수를 호출하여 재배치할 수 없는 경로를 수정하고 빌드 구성을 병합해야 합니다.

tools/<port>

Important

vcpkg는 가장 먼저 C++ 라이브러리 종속성 관리자입니다. 포트 작성자는 설치 출력에 도구를 포함하도록 결정할 때 신중해야 합니다. 예를 들어 디버그 도구가 필요하지 않은 경우 릴리스 실행 파일만 설치하는 것이 좋습니다.

실행 파일이 런타임용인 경우 릴리스 및 디버그 실행 파일을 모두 제공해야 합니다.

포트에서 생성된 실행 도구를 포함합니다. 설치된 각 실행 파일이 생성된 포트의 이름과 일치하는 하위 디렉터리로 들어가는 것이 좋지만 필수는 아닙니다. 예를 들어 포트는 contoso to를 설치 ContosoGenerator.exetools/contoso/ContosoGenerator.exe수 있습니다.

일부 포트는 해당 실행 파일이 하위 디렉터리로 이동 bin 해야 합니다. 이 경우 권장되는 패턴입니다 tools/<port>/bin.