vcpkg_extract_source_archive
アーカイブを抽出します。
使用法
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>]
)
パラメーター
<out-var>
抽出された内容を含むディレクトリで設定する変数の名前。
ARCHIVE
抽出するアーカイブへの完全なパス。
NO_REMOVE_ONE_LEVEL
アーカイブの最上位ディレクトリの削除をスキップします。
ほとんどのアーカイブには、次のような 1 つの最上位ディレクトリが含まれています。
zlib-1.2.11/
doc/
...
examples/
...
ChangeLog
CMakeLists.txt
README
zlib.h
...
既定では、このディレクトリを削除し、 vcpkg_extract_source_archive
すべての内容を返された <out-var>
ディレクトリに移動します。 最上位レベルのディレクトリがない場合はエラーです。
このフラグを使用すると、最上位のディレクトリが保持され、ディレクトリがない場合はエラーになりません。
SKIP_PATCH_CHECK
パッチを適用するときにエラーを無音にして無視します。
このオプションは、次のような --head
不安定なモードで動作している場合にのみ渡す必要があります。 ソースがピン留めされている場合、パッチの適用に失敗した場合は、致命的なエラーと見なす必要があります。
パッチ
抽出されたソースに適用するパッチの一覧。
パッチは、最上位レベルのディレクトリが削除された後に順番に適用されます (参照 NO_REMOVE_ONE_LEVEL
)。 相対パスは、現在のポート ディレクトリを基準にして解釈されます。
ターゲット情報に基づいてパッチを条件付きで適用する必要がある場合は、リストを作成してスプラッタすることができます。
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_BAStandard Edition
抽出されたディレクトリのかなり名前。
パス区切り記号 (/
または \\
) を含めてはなりません。
詳細については、 WORKING_DIRECTORY
をご覧ください。
BA Standard Edition_DIRECTORY
抽出されたディレクトリのルート サブフォルダー。
既定値は src
です。 相対パスにする必要があります。
詳細については、 WORKING_DIRECTORY
をご覧ください。
WORKING_DIRECTORY
抽出されたディレクトリのルート フォルダー。
既定値は ${CURRENT_BUILDTREES_DIR}/<BASE_DIRECTORY>
です。 絶対パスである必要があります。
vcpkg_extract_source_archive
にアーカイブ <WORKING_DIRECTORY>/<SOURCE_BASE>-<short-hash>.clean
を抽出します。 フォルダーが存在する場合は、抽出前に削除されます。 をBASE_DIRECTORY
指定SOURCE_BASE
しない場合、既定値WORKING_DIRECTORY
は ${CURRENT_BUILDTREES_DIR}/src/<archive-stem>-<short-hash>.clean
.
モード:--editable
- 抽出されたフォルダーにサフィックスが追加されない
.clean
- 抽出されたフォルダーは削除されません。 存在する場合は何
vcpkg_extract_source_archive
も行いません。
<short-hash>
特定のアーカイブ ファイルとパッチ ファイルの内容のセットを明確に識別します。
この関数を呼び出した後の作業ディレクトリの内容に対する変更は、編集可能モードでの予期しない動作を回避するために無条件に適用する必要があります。
例
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}")
解説
非推奨の構文
このコマンドでは、非推奨のオーバーロードもサポートされています。
vcpkg_extract_source_archive(<archive> [<working_directory>])
非推奨のオーバーロードは、 <archive>
ターゲットが存在しない場合に ${working_directory}/<archive-filename>.extracted
抽出されます。 この不適切な動作により、パッチやその他の変更が異なるビルド間でリークし、デバッグが困難なエラーが発生します。
明示的なARCHIVE
パラメーターを追加し、抽出されたパスへの直接参照を使用に置き換えることで、非推奨のオーバーロードのすべての使用を上記の Usage の<out-var>
構文に置き換える必要があります。
代替
このコマンドは vcpkg_extract_source_archive_ex()
.
ソース
vcpkg