CMake:如何在Linux中将目标/文件打包到多个包中?

CMake:如何在Linux中将目标/文件打包到多个包中?,cmake,Cmake,我正在做一个项目,它会生成很多可执行文件和库 和配置,它们需要打包到不同的包中进行部署。 问题是,包含这些目标/文件不是相互的 独家一个目标/文件可以属于多个包 我正在使用CMake 2.8.9并尝试使用CPack。我知道这是可行的 安装类型。但我的平台是Ubuntu,所以归档文件/deb也是 可以接受,但他们似乎不支持这一点 对于组件/组/父组,似乎只能打包一个 将目标/文件合并到一个组件/组中 有办法解决这个问题吗 谢谢好吧,为了方便后来者,我会自己回答:从CMake邮件列表中,我得到了答案

我正在做一个项目,它会生成很多可执行文件和库 和配置,它们需要打包到不同的包中进行部署。 问题是,包含这些目标/文件不是相互的 独家一个目标/文件可以属于多个包

我正在使用CMake 2.8.9并尝试使用CPack。我知道这是可行的 安装类型。但我的平台是Ubuntu,所以归档文件/deb也是 可以接受,但他们似乎不支持这一点

对于组件/组/父组,似乎只能打包一个 将目标/文件合并到一个组件/组中

有办法解决这个问题吗


谢谢

好吧,为了方便后来者,我会自己回答:从CMake邮件列表中,我得到了答案:使用CMake 2.8.9或更早版本(到目前为止),使用不同的组件设置多次运行CPack。这有点特别,但可以完成这项工作。

为什么不使用组件?如果我做对了,你想从你的项目中产生更多的deb

我是这样做到的:

SET(CPACK_DEB_COMPONENT_INSTALL 1)

INSTALL(TARGETS buildA DESTINATION lib/myproj COMPONENT main)
INSTALL(TARGETS buildB DESTINATION include/myproj COMPONENT dev)

当我调用
makepackage
时,我得到两个deb,后缀
main
dev
仅包含我用INSTALL()语句指定的内容。

组件是互斥的,这意味着您不能将一个项目打包到多个包中将相同的文件打包到多个包中会导致安装期间包之间发生冲突。我认为组件将满足几乎所有现实生活场景的需要。包命名不灵活:没有空名称的组件,组件名称仅附加在文件名的末尾。要使其工作,请放置:
SET(CPACK\u ARCHIVE\u component\u INSTALL ON)
SET(CPACK\u components\u all\u in\u ONE\u Package ON)
在CMakeLists.txt中运行:
cpack-G ZIP-D cpack\u COMPONENTS\u ALL=“component\u a;common”
cpack-G ZIP-D cpack\u COMPONENTS\u ALL=“component\u b;common”