Sdílet prostřednictvím


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 srcje . 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_DIRECTORYnebo WORKING_DIRECTORY, bude výchozí hodnota ${CURRENT_BUILDTREES_DIR}/src/<archive-stem>-<short-hash>.clean.

V --editable režimu:

  1. Do extrahované složky se nepřidá žádná .clean přípona.
  2. 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().

Source

scripts/cmake/vcpkg_extract_source_archive.cmake