为了减小库大小,在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。
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"
)