4

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

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

有没有一种简单的方法来获取单个组件的包装?

4

1 回答 1

6

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 <...>
于 2016-01-29T13:13:49.567 回答