vcpkg_extract_source_archive
Extrayez une archive.
Utilisation
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>]
)
Paramètres
<out-var>
Nom de la variable à définir avec le répertoire contenant le contenu extrait.
ARCHIVE
Chemin complet de l’archive à extraire.
NO_REMOVE_ONE_LEVEL
Ignorez la suppression du répertoire de niveau supérieur de l’archive.
La plupart des archives contiennent un seul répertoire de niveau supérieur, par exemple :
zlib-1.2.11/
doc/
...
examples/
...
ChangeLog
CMakeLists.txt
README
zlib.h
...
Par défaut, vcpkg_extract_source_archive
supprime ce répertoire et déplace tout le contenu dans le répertoire retourné dans <out-var>
. S’il n’existe aucun répertoire de niveau supérieur, il s’agit d’une erreur.
Avec cet indicateur, le répertoire de niveau supérieur est conservé et il n’est pas une erreur de ne pas en avoir un.
SKIP_PATCH_CHECK
Silence et ignorer les erreurs lors de l’application de correctifs.
Cette option ne doit être transmise qu’en mode instable comme --head
. Si les sources sont épinglées, l’échec de l’application d’un correctif doit être considéré comme une erreur irrécupérable.
CORRECTIFS
Liste des correctifs à appliquer à la source extraite.
Les correctifs seront appliqués dans l’ordre, une fois les répertoires de niveau supérieur supprimés (voir NO_REMOVE_ONE_LEVEL
). Les chemins relatifs sont interprétés par rapport au répertoire de port actuel.
Si un correctif doit être appliqué de manière conditionnelle en fonction des informations cibles, vous pouvez construire une liste et la plaquer.
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
Nom de l’annuaire extrait.
Ne doit pas contenir de séparateurs de chemin d’accès (/
ou \\
).
Consultez WORKING_DIRECTORY
pour plus d’informations.
BASE_DIRECTORY
Sous-dossier racine du répertoire extrait.
La valeur par défaut est src
. Doit être un chemin relatif.
Consultez WORKING_DIRECTORY
pour plus d’informations.
WORKING_DIRECTORY
Dossier racine du répertoire extrait.
La valeur par défaut est ${CURRENT_BUILDTREES_DIR}/<BASE_DIRECTORY>
. Doit être un chemin absolu.
vcpkg_extract_source_archive
extrait l’archive dans <WORKING_DIRECTORY>/<SOURCE_BASE>-<short-hash>.clean
. Si le dossier existe, il est supprimé avant l’extraction. Sans spécifier SOURCE_BASE
, BASE_DIRECTORY
ou , ce WORKING_DIRECTORY
sera par défaut .${CURRENT_BUILDTREES_DIR}/src/<archive-stem>-<short-hash>.clean
En --editable
mode :
- Aucun suffixe n’est
.clean
ajouté au dossier extrait - Le dossier extrait n’est pas supprimé. S’il existe,
vcpkg_extract_source_archive
ne fait rien.
<short-hash>
identifie sans ambiguïté un ensemble particulier de contenu d’archive et de fichier de correctif.
Toutes les modifications apportées au contenu du répertoire de travail après l’appel de cette fonction doivent être appliquées de manière inconditionnelle afin d’éviter un comportement inattendu en mode modifiable.
Exemples
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}")
Notes
Syntaxe déconseillée
Cette commande prend également en charge une surcharge déconseillée :
vcpkg_extract_source_archive(<archive> [<working_directory>])
La surcharge déconseillée extrait <archive>
${working_directory}/<archive-filename>.extracted
si la cible n’existe pas. Ce comportement incorrect permet aux correctifs et à d’autres modifications de fuite entre différentes builds, ce qui entraîne des erreurs de débogage difficiles à déboguer.
Toutes les utilisations de la surcharge déconseillée doivent être remplacées par la syntaxe de l’utilisation ci-dessus en ajoutant un paramètre explicite ARCHIVE
et en remplaçant les références directes au chemin extrait par des utilisations du <out-var>
.
Remplacement
Cette commande remplace vcpkg_extract_source_archive_ex()
.