vcpkg_extract_source_archive
Estrarre un archivio.
Utilizzo
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>]
)
Parametri
<out-var>
Nome della variabile da impostare con la directory contenente il contenuto estratto.
ARCHIVE
Percorso completo dell'archivio da estrarre.
NO_REMOVE_ONE_LEVEL
Ignorare la rimozione della directory di primo livello dell'archivio.
La maggior parte degli archivi contiene una singola directory di primo livello, ad esempio:
zlib-1.2.11/
doc/
...
examples/
...
ChangeLog
CMakeLists.txt
README
zlib.h
...
Per impostazione predefinita, vcpkg_extract_source_archive
rimuove questa directory e sposta tutto il contenuto nella directory restituita in <out-var>
. Se non è presente alcuna directory di primo livello, si tratta di un errore.
Con questo flag, la directory di primo livello verrà mantenuta e non si tratta di un errore di non averne uno.
SKIP_PATCH_CHECK
Silenzio e ignorare gli errori durante l'applicazione di patch.
Questa opzione deve essere passata solo quando si opera in modalità instabile, ad esempio --head
. Se le origini vengono aggiunte, l'applicazione di una patch deve essere considerata un errore irreversibile.
PATCH
Elenco delle patch da applicare all'origine estratta.
Le patch verranno applicate in ordine, dopo la rimozione di tutte le directory di primo livello (vedere NO_REMOVE_ONE_LEVEL
). I percorsi relativi vengono interpretati in relazione alla directory della porta corrente.
Se una patch deve essere applicata in modo condizionale in base alle informazioni di destinazione, è possibile creare un elenco e una 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_BAedizione Standard
Nome abbastanza per la directory estratta.
Non deve contenere separatori di percorso (/
o \\
).
Per informazioni dettagliate, vedere WORKING_DIRECTORY
.
BA edizione Standard_DIRECTORY
Sottocartella radice per la directory estratta.
Il valore predefinito è src
. Deve essere un percorso relativo.
Per informazioni dettagliate, vedere WORKING_DIRECTORY
.
WORKING_DIRECTORY
Cartella radice per la directory estratta.
Il valore predefinito è ${CURRENT_BUILDTREES_DIR}/<BASE_DIRECTORY>
. Deve essere un percorso assoluto.
vcpkg_extract_source_archive
estrae l'archivio in <WORKING_DIRECTORY>/<SOURCE_BASE>-<short-hash>.clean
. Se la cartella esiste, viene eliminata prima dell'estrazione. Senza specificare SOURCE_BASE
, BASE_DIRECTORY
o WORKING_DIRECTORY
, per impostazione predefinita verrà impostato su ${CURRENT_BUILDTREES_DIR}/src/<archive-stem>-<short-hash>.clean
.
In --editable
modalità:
- Non
.clean
viene aggiunto alcun suffisso alla cartella estratta - La cartella estratta non viene eliminata. Se esiste,
vcpkg_extract_source_archive
non esegue alcuna operazione.
<short-hash>
identifica in modo univoco un determinato set di contenuti di file di archiviazione e patch.
Eventuali modifiche al contenuto della directory di lavoro dopo la chiamata di questa funzione devono essere applicate in modo incondizionato per evitare comportamenti imprevisti in modalità modificabile.
Esempi
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}")
Osservazioni:
Sintassi deprecata
Questo comando supporta anche un overload deprecato:
vcpkg_extract_source_archive(<archive> [<working_directory>])
L'overload deprecato estrae <archive>
in ${working_directory}/<archive-filename>.extracted
se la destinazione non esiste. Questo comportamento non corretto consente patch e altre modifiche di perdere tra compilazioni diverse, causando errori difficili da sottoporre a debug.
Tutti gli usi dell'overload deprecato devono essere sostituiti con la sintassi descritta in Utilizzo precedente aggiungendo un parametro esplicito ARCHIVE
e sostituendo i riferimenti diretti al percorso estratto con gli usi di <out-var>
.
Sostituzione
Questo comando sostituisce vcpkg_extract_source_archive_ex()
.