CPACK_INSTALL_CMAKE_PROJECTS可用于选择性安装吗?

时间:2017-01-04 19:49:17

标签: cmake install

对于我的应用程序,我创建了4个组件,并且只想“安装”应用程序及其文档。根据{{​​3}},如果在我的配置文件中我有行

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;/")

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

我错了什么?

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

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

此外:如果我使用组件名称,'make package'只生成一个包,而不附加组件名称,但具有正确的内容。直到现在我猜测'make install'和'make package'是独立的。

1 个答案:

答案 0 :(得分:0)

将多个值设置为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;/"
)