설치 디렉터리 레이아웃 규칙
이 문서에서는 설치 디렉터리에 대해 vcpkg에서 사용하는 레이아웃 규칙을 설명합니다. 설치 디렉터리에는 각 패키지에서 설치한 파일이 저장됩니다. 포트 작성자는 패키지가 이 문서에 설명된 규칙을 따르는지 확인해야 합니다.
클래식 모드에서 설치 디렉터리가 $VCPKG_ROOT/installed
위치합니다(vcpkg 설치 경로는 어디에 $VCPKG_ROOT
있음). 매니페스트 모드에서 각 매니페스트 파일에는 해당 vcpkg_installed
디렉터리가 있습니다. 옵션을 사용하여 설치 디렉터리의 위치를 변경할 --x-install-root
수 있습니다.
작업 모드에 관계없이 설치 디렉터리의 레이아웃은 동일하게 유지됩니다.
설치 디렉터리가 표시되지 않으면 패키지가 처음 설치될 때 설치 디렉터리가 만들어집니다. 일부 패키지를 먼저 설치해 봅니다.
설치 디렉터리의 루트 수준에는 다음이 포함됩니다.
vcpkg
설치된 패키지 및 파일을 추적하는 디렉터리- 각 트리플렛에 대한 디렉터리입니다. 각 triplet 디렉터리에는 각 패키지에서 설치한 파일이 포함됩니다.
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> |
실행 도구 |
bin
및 debug/bin
디렉터리
Windows에서 이러한 디렉터리에는 릴리스 및 디버그 구성을 위한 DLL 및 PDB 파일이 각각 포함됩니다. 포트에서 생성된 모든 실행 파일을 디렉터리로 tools/<port>
이동해야 합니다.
include
헤더 파일(.h
, .hpp
, .hxx
)을 포함합니다. 이 디렉터리 아래의 레이아웃은 패키지 헤더 파일의 의도한 사용량을 반영해야 합니다. 예를 들어 contoso
사용 #include <contoso/contoso.h>
하려는 라이브러리는 헤더 파일을 include/contoso/contoso.h
제공해야 합니다.
vcpkg는 디렉터리 루트 include
에 예약된 헤더 파일 이름(예: err.h
, user.h
time.h
및 기타)을 설치하는 것을 금지합니다.
금지된 헤더 파일 이름을 제공하는 라이브러리는 해당 헤더 파일을 디렉터리 내에 include/<port>
배치해야 합니다. 라이브러리가 시스템 헤더 파일을 바꾸려는 경우 해당 정책에서 portfile.cmake
정책을 설정 VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS
해야 합니다.
lib
및 debug/lib
디렉터리
정적 라이브러리, 가져오기 라이브러리(Windows) 및 공유 라이브러리(Windows가 아닌 경우)를 포함합니다.
lib/manual-link
및 debug/lib/manual-link
디렉터리
수동으로 연결해야 하는 라이브러리를 포함합니다.
자동으로 연결될 때 문제가 발생할 수 있는 파일은 lib/manual-link
디렉터리 대신 폴더에 lib
배치해야 합니다. 예를 들어 라이브러리가 프로그램의 함수를 정의 main()
하기 위한 경우입니다.
lib/pkgconfig
share/pkgconfig
및 debug/lib/pkgconfig
디렉터리
pkgconfig 통합 파일(.pc
)을 포함합니다. 라이브러리는 구성 종속 파일과 구성 독립적 파일을 동시에 제공하지 않아야 합니다.
예를 들어 설치 lib/pkgconfig/contoso.pc
하지 마세요.share/pkgconfig/contoso.pc
plugins/<group>
및 debug/plugins/<group>
애플리케이션을 사용하여 런타임 중에 로드할 공유 라이브러리를 포함합니다.
share/<port>
각 포트에 의해 설치된 기타 파일을 포함합니다. 예를 들어 SPDX 파일, 스크립트 등이 있습니다.
share/<port>/copyright
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.exe
할 tools/contoso/ContosoGenerator.exe
수 있습니다.
일부 포트는 해당 실행 파일이 하위 디렉터리로 이동 bin
해야 합니다. 이 경우 권장되는 패턴입니다 tools/<port>/bin
.
vcpkg