vcpkg_extract_source_archive
Extrahujte archiv.
Využití
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>]
)
Parametry
<out-var>
Název proměnné, která se má nastavit s adresářem obsahujícím extrahovaný obsah.
ARCHIV
Úplná cesta k archivu, která se má extrahovat.
NO_REMOVE_ONE_LEVEL
Přeskočte odebrání adresáře nejvyšší úrovně archivu.
Většina archivů obsahuje jeden adresář nejvyšší úrovně, například:
zlib-1.2.11/
doc/
...
examples/
...
ChangeLog
CMakeLists.txt
README
zlib.h
...
Ve výchozím nastavení vcpkg_extract_source_archive
odebere tento adresář a přesune veškerý obsah do adresáře vráceného v <out-var>
. Pokud neexistuje žádný adresář nejvyšší úrovně, jedná se o chybu.
S tímto příznakem se adresář nejvyšší úrovně zachová a nejedná se o chybu, že ho nemáte.
SKIP_PATCH_CHECK
Mlčení a ignorování chyb při použití oprav
Tato možnost by měla být předána pouze při provozu v nestabilním režimu, jako je --head
. Pokud jsou zdroje připnuté, při selhání použití opravy by se měla považovat za závažnou chybu.
OPRAVY
Seznam oprav, které se mají použít u extrahovaného zdroje
Opravy se použijí v pořadí po odebrání všech adresářů nejvyšší úrovně (viz NO_REMOVE_ONE_LEVEL
). Relativní cesty jsou interpretovány vzhledem k aktuálnímu adresáři portů.
Pokud by se oprava měla podmíněně použít na základě cílových informací, můžete vytvořit seznam a splatovat ji.
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
Hezký název extrahovaného adresáře.
Nesmí obsahovat oddělovače cest (/
nebo \\
).
Další WORKING_DIRECTORY
podrobnosti najdete.
BASE_DIRECTORY
Kořenová podsložka pro extrahovaný adresář.
Výchozí hodnota src
je . Musí to být relativní cesta.
Další WORKING_DIRECTORY
podrobnosti najdete.
WORKING_DIRECTORY
Kořenová složka extrahovaného adresáře
Výchozí hodnota ${CURRENT_BUILDTREES_DIR}/<BASE_DIRECTORY>
je . Musí to být absolutní cesta.
vcpkg_extract_source_archive
extrahuje archiv do <WORKING_DIRECTORY>/<SOURCE_BASE>-<short-hash>.clean
. Pokud složka existuje, odstraní se před extrahováním. Bez zadání SOURCE_BASE
, BASE_DIRECTORY
nebo WORKING_DIRECTORY
, bude výchozí hodnota ${CURRENT_BUILDTREES_DIR}/src/<archive-stem>-<short-hash>.clean
.
V --editable
režimu:
- Do extrahované složky se nepřidá žádná
.clean
přípona. - Extrahovaná složka se neodstraní. Pokud existuje,
vcpkg_extract_source_archive
nic nedělá.
<short-hash>
jednoznačně identifikuje konkrétní sadu obsahu archivu a souboru opravy.
Veškeré změny obsahu pracovního adresáře po volání této funkce by měly být použity bezpodmínečně, aby se zabránilo neočekávanému chování v režimu úprav.
Příklady
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}")
Poznámky
Zastaralá syntaxe
Tento příkaz také podporuje zastaralé přetížení:
vcpkg_extract_source_archive(<archive> [<working_directory>])
Zastaralé přetížení se extrahuje <archive>
, ${working_directory}/<archive-filename>.extracted
pokud cíl neexistuje. Toto nesprávné chování umožňuje opravy a další úpravy úniku mezi různými sestaveními, což vede k těžko laděným chybám.
Všechna použití zastaralého přetížení by měla být nahrazena syntaxí v části Použití výše přidáním explicitního ARCHIVE
parametru a nahrazením přímých odkazů na extrahovaná cesta použitím <out-var>
.
Náhrada
Tento příkaz nahradí vcpkg_extract_source_archive_ex()
.