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>.clean
pliku . Jeśli folder istnieje, zostanie usunięty przed wyodrębnianiem. Bez określania SOURCE_BASE
wartości , BASE_DIRECTORY
lub WORKING_DIRECTORY
wartość domyślna ${CURRENT_BUILDTREES_DIR}/src/<archive-stem>-<short-hash>.clean
to .
W --editable
trybie:
- Do wyodrębnionego folderu nie
.clean
jest dodawany sufiks - 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 .