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
. Если папка существует, она удаляется перед извлечением. Без указания SOURCE_BASE
, BASE_DIRECTORY
или WORKING_DIRECTORY
, это значение по умолчанию ${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()
.