cmake - CPACK_INSTALL_CMAKE_PROJECTS 可以用于选择性安装吗?

标签 cmake installation

对于我的应用程序,我创建了 4 个组件,并且只想“安装”应用程序及其文档。根据https://cmake.org/Wiki/CMake:CPackConfiguration ,如果在我的配置文件中有一行

set(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${CMAKE_PROJECT_NAME};ALL;/")

然后安装所有四个组件。如果我使用组件名称而不是像

set(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${CMAKE_PROJECT_NAME};apps docs;/")

我收到一个没有附加组件名称的包,它包含顶级请求目录但根本没有文件。如果我只提供一个组件,比如

set(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${CMAKE_PROJECT_NAME};apps;/")

包名不包含组件名称,但文件在正确的位置生成。

我做错了什么?

编辑:只是为了添加更多奇怪的东西: 对于所有情况,创建名称为 install_manifest_+comp name 的 4 个文件。对于第二种情况,我有长度为零的 install_manifest_apps docs.txt,对于第三种情况,我有包含正确内容的 install_manifest_apps.txt

在我看来,宏只能接受一个参数,可以是 ALL 或组件名称;这意味着它不能用于安装双组件系统。

此外:如果我使用一个组件名称,make package 只生成一个包,不附加组件名称,但包含正确的内容。到现在为止我猜make installmake package是独立的。

最佳答案

为 CPACK_INSTALL_CMAKE_PROJECTS 设置多个值,每个值对应您要包含的每个组件:

set( CPACK_INSTALL_CMAKE_PROJECTS
  "${CMAKE_CURRENT_BINARY_DIR};${CMAKE_PROJECT_NAME};apps;/"
  "${CMAKE_CURRENT_BINARY_DIR};${CMAKE_PROJECT_NAME};docs;/"
)

关于cmake - CPACK_INSTALL_CMAKE_PROJECTS 可以用于选择性安装吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41472112/

相关文章:

CMAKE 未定义 CYGWIN 变量

cmake 和 Visual Studio

linux - 是什么导致 "Template parse error near ` .', in stanza #2 of/var/lib/dpkg/tmp.ci/templates"错误消息?

xcode - 无法使用brew 安装任何东西

CMake 无法静态链接 SDL2

c++ - 链接两个 C++ 项目的 CMakeLists 配置

CMake 和 clang_complete

python - 如何判断你是否安装了多个 Django

macos - 创建 OSX 安装程序

python - 为什么需要 Python 来安装 Cassandra