使用ExternalProject设置SET(CPACK_COMPONENTS_ALL ...)

时间:2019-04-23 15:05:16

标签: cmake cpack

我使用ExtrenalProject cmake模块将第3方或内部依赖项添加到我的构建中。然后,我将CPack模块与组件一起使用,以下列方式仅安装当前代码库中的组件。

set(CPACK_COMPONENTS_ALL
  common-lib
  common-include
  common-depends
)

在CMake中声明的这些组件之一的示例是:

install(TARGETS common
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib
  COMPONENT common-lib
)

但是,使用add_subdirectory添加的其他项目(例如google test或其他内部库)也声明了安装目标。当我跑步时

make package

然后列出生成的.deb.tar的内容,我看到CPACK_COMPONENTS_ALL变量中未设置的其他组件的内容。

让CMake和CPack仅安装所需组件的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以仅将参数EXCLUDE_FROM_ALL添加到add_subdirectory()调用的末尾。这实际上将禁用在添加的子目录中进行的所有include()调用。