使用CMake和CPack为一个组件创建包

时间:2016-01-29 11:45:22

标签: cmake cpack

我有一个客户端/服务器应用程序的项目,我为每个应用程序定义了一个安装组件。

我使用set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)来运行make package时获取两个不同的包文件。但我没有为每个人制定不同的目标。因此,为了获得客户端安装包,我也得到了编译和打包的服务器应用程序。

是否有一种简单的方法可以获得单个组件的包装?

1 个答案:

答案 0 :(得分:4)

CMake假定在安装make all之前应该执行。当它想要创建包时,CPack也会做出相同的假设。如果您只想构建与某个特定组件相关的目标,则需要强制make all仅构建这些目标。

例如,您可以检查要在cmake命令行中设置的缓存变量:

<强>的CMakeLists.txt

option(SERVER_ONLY "Set if you want to build only server")
option(CLIENT_ONLY "Set if you want to build only client")

if(NOT SERVER_ONLY)
    add_subdirectory(client)
endif()

if(NOT CLIENT_ONLY)
    add_subdirectory(server)
endif()

因此,对于构建和仅包服务器组件,您可以使用

cmake -DSERVER_ONLY=ON <source-dir>
cpack <...>