我使用CMake Install
命令将一些文件安装到一个文件夹中。然后我想将文件夹打包成zip
或tar
。我怎么能在cmake中做到这一点。我的意思是在执行make install
后我也可以获得zip文件
PS: 我试过了
install(CODE "execute_process(COMMAND tar -cf ${CMAKE_PROJECT_NAME}.tar ${CMAKE_PROJECT_NAME}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})")
但CMake的安装顺序在不同目录中未定义
答案 0 :(得分:2)
您可以使用cpack
。只需easiest way include(CPack)
进入您的根CMakeLists.txt
,然后make package
即可。默认格式完全符合您的要求(.zip
用于Windows,各种.tar
用于* NIX)。要制作其他软件包(RPM,DEB,MSI,EXE),最好熟悉文档。
答案 1 :(得分:1)
由于您在目录中未定义安装顺序,因此您可以尝试显式声明相关性,或者列出要安装的所有目录,并在将安装程序包的自定义命令的DEPENDS中使用它。 cmake -P cmake_install.cmake会将文件安装到您的目录中。
add_custom_command(
OUTPUT ${tar_package}
DEPENDS ${deps}
# Install in a temporary dir
COMMAND cmake
-DCOMPONENT=${component}
-DCMAKE_INSTALL_PREFIX=${install_dir}
-P ${CMAKE_BINARY_DIR}/cmake_install.cmake
# make tar or whatever you want
COMMAND tar -czf
${tar_package}
-C ${install_dir} .
)