Udostępnij za pośrednictwem


vcpkg_extract_source_archive

Wyodrębnianie archiwum.

Sposób użycia

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>

Nazwa zmiennej do ustawienia z katalogiem zawierającym wyodrębnionej zawartości.

ARCHIWUM

Pełna ścieżka do archiwum w celu wyodrębnienia.

NO_REMOVE_ONE_LEVEL

Pomiń usuwanie katalogu najwyższego poziomu archiwum.

Większość archiwów zawiera pojedynczy katalog najwyższego poziomu, taki jak:

zlib-1.2.11/
    doc/
        ...
    examples/
        ...
    ChangeLog
    CMakeLists.txt
    README
    zlib.h
    ...

Domyślnie vcpkg_extract_source_archive usuwa ten katalog i przenosi całą zawartość do katalogu zwróconego w pliku <out-var>. Jeśli nie ma katalogu najwyższego poziomu, jest to błąd.

Przy użyciu tej flagi katalog najwyższego poziomu zostanie zachowany i nie jest to błąd, aby go nie mieć.

SKIP_PATCH_CHECK

Wycisz i ignoruj błędy podczas stosowania poprawek.

Ta opcja powinna być przekazywana tylko w przypadku działania w trybie niestabilnym, takim jak --head. Jeśli źródła są przypięte, nie można zastosować poprawki, należy uznać za błąd krytyczny.

POPRAWKI

Lista poprawek do zastosowania do wyodrębnionego źródła.

Poprawki zostaną zastosowane w kolejności, po usunięciu wszystkich katalogów najwyższego poziomu (zobacz NO_REMOVE_ONE_LEVEL). Ścieżki względne są interpretowane względem bieżącego katalogu portów.

Jeśli poprawka powinna być stosowana warunkowo na podstawie informacji docelowych, możesz utworzyć listę i ją splat.

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

Ładna nazwa wyodrębnionego katalogu.

Nie może zawierać separatorów ścieżek (/ lub \\).

Zobacz WORKING_DIRECTORY , aby uzyskać więcej szczegółów.

BASE_DIRECTORY

Podfolder główny dla wyodrębnionego katalogu.

Wartość domyślna to src. Musi być ścieżką względną.

Zobacz WORKING_DIRECTORY , aby uzyskać więcej szczegółów.

WORKING_DIRECTORY

Folder główny wyodrębnionego katalogu.

Wartość domyślna to ${CURRENT_BUILDTREES_DIR}/<BASE_DIRECTORY>. Musi być ścieżką bezwzględną.

vcpkg_extract_source_archive wyodrębnia archiwum do <WORKING_DIRECTORY>/<SOURCE_BASE>-<short-hash>.cleanpliku . Jeśli folder istnieje, zostanie usunięty przed wyodrębnianiem. Bez określania SOURCE_BASEwartości , BASE_DIRECTORYlub WORKING_DIRECTORYwartość domyślna ${CURRENT_BUILDTREES_DIR}/src/<archive-stem>-<short-hash>.cleanto .

W --editable trybie:

  1. Do wyodrębnionego folderu nie .clean jest dodawany sufiks
  2. Wyodrębniony folder nie jest usuwany. Jeśli istnieje, vcpkg_extract_source_archive nic nie robi.

<short-hash> jednoznacznie identyfikuje określony zestaw zawartości archiwum i pliku poprawek. Wszelkie modyfikacje zawartości katalogu roboczego po wywołaniu tej funkcji powinny być stosowane bezwarunkowo, aby uniknąć nieoczekiwanego zachowania w trybie edytowalnym.

Przykłady

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}")

Uwagi

Przestarzała składnia

To polecenie obsługuje również przestarzałe przeciążenie:

vcpkg_extract_source_archive(<archive> [<working_directory>])

Przestarzałe przeciążenie wyodrębnia <archive> się, ${working_directory}/<archive-filename>.extracted jeśli obiekt docelowy nie istnieje. To nieprawidłowe zachowanie umożliwia stosowanie poprawek i innych modyfikacji w celu wycieku między różnymi kompilacjami, co powoduje błędy trudne do debugowania.

Wszystkie zastosowania przestarzałego przeciążenia powinny zostać zastąpione składnią w sekcji Użycie powyżej przez dodanie jawnego ARCHIVE parametru i zastąpienie odwołań bezpośrednich do wyodrębnionej ścieżki przy użyciu elementu <out-var>.

Zastąpienie

To polecenie zastępuje vcpkg_extract_source_archive_ex()element .

Źródło

scripts/cmake/vcpkg_extract_source_archive.cmake