【问题标题】:Create package for just one component with CMake and CPack使用 CMake 和 CPack 为一个组件创建包
【发布时间】:2016-01-29 11:45:21
【问题描述】:

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

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

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

【问题讨论】:

    标签: cmake cpack


    【解决方案1】:

    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 <...>
    

    【讨论】:

      猜你喜欢
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 2021-12-27
      相关资源
      最近更新 更多