如何使用 cmake add_custom_target 将 .tar.gz 中的所有文件提取到特定文件夹?

问题描述 投票:0回答:1

为了减小库大小,在cmake中使用

cmake -E tar "zcvf" "lib.tar.gz" out.lib
自动创建
.tar.gz
,然后将
lib.tar.gz
移动到文件夹
f
,即。
f/lib.tar.gz

但是,要在另一个项目中使用该库,需要解压到特定文件夹。没有cmake的命令很清楚:

tar -xzf f/lib.tar.gz -C target-folder

问题是,在cmake中,如何将

cmake -E tar "xzf" f/lib.tar.gz
-C
选项结合起来? 诸如
cmake -E tar "xzf" f/lib.tar.gz -C f/
之类的命令将导致错误。

理想的脚本是……喜欢

add_custom_target(PrepareLib
        COMMAND ${CMAKE_COMMAND}  -E tar "xzf" command....
        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ## note, this line must not be modified
    )

工具版本:Visual Studio 2017、Windows 10 和 CMake 3.17.1。

windows cmake tar
1个回答
0
投票
execute_process(
    COMMAND ${CMAKE_COMMAND} -E tar x 
    "file_to_extract.7z"
    WORKING_DIRECTORY "directory_you_want_to_extract_to"
    )

如果您不知道 Directory_you_want_to_extract_to 是否存在,请在 tar 之前运行此命令。

execute_process(
        COMMAND ${CMAKE_COMMAND} -E make_directory 
        "directory_you_want_to_extract_to"
        )
© www.soinside.com 2019 - 2024. All rights reserved.