次の方法で共有


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

  1. 抽出されたフォルダーにサフィックスが追加されない.clean
  2. 抽出されたフォルダーは削除されません。 存在する場合は何 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().

ソース

scripts/cmake/vcpkg_extract_source_archive.cmake