如何在CMAKE中打包已安装的文件

时间:2016-02-22 07:44:20

标签: cmake

我使用CMake Install命令将一些文件安装到一个文件夹中。然后我想将文件夹打包成ziptar。我怎么能在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的安装顺序在不同目录中未定义

2 个答案:

答案 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} .
    )