vcpkg_extract_source_archive
보관 파일을 추출합니다.
사용
vcpkg_extract_source_archive(
<out-var>
ARCHIVE <path>
[NO_REMOVE_ONE_LEVEL]
[SKIP_PATCH_CHECK]
[PATCHES <patch>...]
[SOURCE_BASE <base>]
[BASE_DIRECTORY <relative-path> | WORKING_DIRECTORY <absolute-path>]
)
매개 변수
<out-var>
추출된 내용이 포함된 디렉터리로 설정할 변수의 이름입니다.
보관
추출할 보관 파일의 전체 경로입니다.
NO_REMOVE_ONE_LEVEL
보관 파일의 최상위 디렉터리 제거를 건너뜁니다.
대부분의 보관 파일에는 다음과 같은 단일 최상위 디렉터리가 포함되어 있습니다.
zlib-1.2.11/
doc/
...
examples/
...
ChangeLog
CMakeLists.txt
README
zlib.h
...
기본적으로 vcpkg_extract_source_archive
이 디렉터리를 제거하고 모든 내용을 반환된 <out-var>
디렉터리로 이동합니다. 최상위 디렉터리가 없으면 오류가 발생합니다.
이 플래그를 사용하면 최상위 디렉터리가 유지되며 이 디렉터리가 없는 것은 오류가 아닙니다.
SKIP_PATCH_CHECK
패치를 적용할 때 오류를 침묵하고 무시합니다.
이 옵션은 다음과 같이 --head
불안정한 모드에서 작동하는 경우에만 전달되어야 합니다. 원본이 고정된 경우 패치를 적용하지 못하는 경우 심각한 오류로 간주되어야 합니다.
패치
추출된 원본에 적용할 패치 목록입니다.
최상위 디렉터리를 제거한 후 패치가 순서대로 적용됩니다(참조 NO_REMOVE_ONE_LEVEL
). 상대 경로는 현재 포트 디렉터리를 기준으로 해석됩니다.
대상 정보에 따라 패치를 조건부로 적용해야 하는 경우 목록을 생성하고 배치할 수 있습니다.
set(patches "")
if(VCPKG_TARGET_IS_WINDOWS)
list(APPEND patches only-windows.patch)
endif()
vcpkg_extract_source_archive(src
ARCHIVE "${archive}"
PATCHES
always-applied.patch
${patches}
)
SOURCE_BASE
추출된 디렉터리의 이름입니다.
경로 구분 기호(/
또는 \\
)를 포함해서는 안 됩니다.
자세한 내용은 참조하세요 WORKING_DIRECTORY
.
BASE_DIRECTORY
추출된 디렉터리의 루트 하위 폴더입니다.
기본값은 src
입니다. 상대 경로여야 합니다.
자세한 내용은 참조하세요 WORKING_DIRECTORY
.
WORKING_DIRECTORY
추출된 디렉터리의 루트 폴더입니다.
기본값은 ${CURRENT_BUILDTREES_DIR}/<BASE_DIRECTORY>
입니다. 절대 경로여야 합니다.
vcpkg_extract_source_archive
에서 보관 <WORKING_DIRECTORY>/<SOURCE_BASE>-<short-hash>.clean
파일을 추출합니다. 폴더가 있으면 추출하기 전에 삭제됩니다. 또는 를 BASE_DIRECTORY
WORKING_DIRECTORY
지정SOURCE_BASE
하지 않으면 기본값은 .로 설정${CURRENT_BUILDTREES_DIR}/src/<archive-stem>-<short-hash>.clean
됩니다.
모드:--editable
- 추출된 폴더에 접미사가 추가되지 않음
.clean
- 추출된 폴더는 삭제되지 않습니다. 존재하는
vcpkg_extract_source_archive
경우 아무 것도 수행하지 않습니다.
<short-hash>
특정 보관 및 패치 파일 콘텐츠 집합을 명확하게 식별합니다.
편집 가능한 모드에서 예기치 않은 동작을 방지하려면 이 함수를 호출한 후 작업 디렉터리의 내용을 수정한 내용을 무조건 적용해야 합니다.
예제
vcpkg_download_distfile(
archive # "archive" is set to the path to the downloaded file
URLS "https://nmap.org/dist/nmap-7.70.tar.bz2"
FILENAME "nmap-7.70.tar.bz2"
SHA512 084c148b022ff6550e269d976d0077f7932a10e2ef218236fe13aa3a70b4eb6506df03329868fc68cb3ce78e4360b200f5a7a491d3145028fed679ef1c9ecae5
)
vcpkg_extract_source_archive(
src # "src" is set to the path to the extracted files
ARCHIVE "${archive}"
SOURCE_BASE nmap.org-nmap-7.70
PATCHES
0001-disable-werror.patch
)
vcpkg_cmake_configure(SOURCE_PATH "${src}")
설명
사용되지 않는 구문
이 명령은 사용되지 않는 오버로드도 지원합니다.
vcpkg_extract_source_archive(<archive> [<working_directory>])
사용되지 않는 오버로드는 대상이 없는 경우 추출됩니다 <archive>
${working_directory}/<archive-filename>.extracted
. 이 잘못된 동작을 사용하면 다른 빌드 간에 패치 및 기타 수정 내용이 누출되어 디버그하기 어려운 오류가 발생합니다.
더 이상 사용되지 않는 오버로드의 모든 용도는 명시적 ARCHIVE
매개 변수를 추가하고 추출된 경로에 대한 직접 참조를 사용으로 대체하여 위 사용법의 <out-var>
구문으로 바꿔야 합니다.
치환
이 명령은 .를 대체합니다.vcpkg_extract_source_archive_ex()
원본
vcpkg