vcpkg_extract_source_archive
Extraia um arquivo.
Uso
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>]
)
Parâmetros
<out-var>
Nome da variável a ser definida com o diretório que contém o conteúdo extraído.
ARCHIVE
Caminho completo para o arquivo a ser extraído.
NO_REMOVE_ONE_LEVEL
Ignore a remoção do diretório de nível superior do arquivo.
A maioria dos arquivos contém um único diretório de nível superior, como:
zlib-1.2.11/
doc/
...
examples/
...
ChangeLog
CMakeLists.txt
README
zlib.h
...
Por padrão, vcpkg_extract_source_archive
remove esse diretório e move todo o conteúdo para o diretório retornado no <out-var>
. Se não houver nenhum diretório de nível superior, trata-se de um erro.
Com esse sinalizador, o diretório de nível superior será preservado e não é um erro não ter um.
SKIP_PATCH_CHECK
Silencie e ignore erros ao aplicar patches.
Essa opção só deve ser passada ao operar em um modo instável como --head
o . Se as fontes estiverem fixadas, deixar de aplicar um patch deve ser considerado um erro fatal.
PATCHES
Lista de patches a serem aplicados à fonte extraída.
Os patches serão aplicados em ordem, depois que todos os diretórios de nível superior forem removidos (consulte NO_REMOVE_ONE_LEVEL
). Os caminhos relativos são interpretados em relação ao diretório de porta atual.
Se um patch deve ser aplicado condicionalmente com base nas informações de destino, você pode construir uma lista e escaloná-la.
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
Nome bonito para o diretório extraído.
Não deve conter separadores de caminho (/
ou \\
).
Confira WORKING_DIRECTORY
para saber mais.
BASE_DIRECTORY
Subpasta raiz para o diretório extraído.
Assume o padrão de src
. Deve ser um caminho relativo.
Confira WORKING_DIRECTORY
para saber mais.
WORKING_DIRECTORY
Pasta raiz para o diretório extraído.
Assume o padrão de ${CURRENT_BUILDTREES_DIR}/<BASE_DIRECTORY>
. Deve ser um caminho absoluto.
vcpkg_extract_source_archive
extrai o arquivo em <WORKING_DIRECTORY>/<SOURCE_BASE>-<short-hash>.clean
. Se a pasta existir, ela será excluída antes da extração. Sem especificar SOURCE_BASE
, ou WORKING_DIRECTORY
, BASE_DIRECTORY
isso será padrão para ${CURRENT_BUILDTREES_DIR}/src/<archive-stem>-<short-hash>.clean
.
Em --editable
modo:
- Nenhum
.clean
sufixo é adicionado à pasta extraída - A pasta extraída não é excluída. Se existe,
vcpkg_extract_source_archive
não faz nada.
<short-hash>
identifica inequivocamente um conjunto específico de conteúdo de arquivo morto e de patch.
Quaisquer modificações no conteúdo do diretório de trabalho depois de chamar essa função devem ser aplicadas incondicionalmente para evitar um comportamento inesperado no modo editável.
Exemplos
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}")
Comentários
Sintaxe preterida
Este comando também suporta uma sobrecarga preterida:
vcpkg_extract_source_archive(<archive> [<working_directory>])
A sobrecarga preterida será extraída <archive>
se ${working_directory}/<archive-filename>.extracted
o destino não existir. Esse comportamento incorreto permite que patches e outras modificações vazem entre compilações diferentes, resultando em erros difíceis de depurar.
Todos os usos da sobrecarga preterida devem ser substituídos pela sintaxe em Uso acima, adicionando um parâmetro explícito ARCHIVE
e substituindo referências diretas ao caminho extraído por usos do <out-var>
.
Substituição
Este comando substitui vcpkg_extract_source_archive_ex()
o .