仅在CPack中将文件添加到ARCHIVE包

时间:2015-09-08 14:26:53

标签: cmake cpack

是否可以使用CMake / CPack将一些文件添加到ARCHIVE生成器?显然组件会这样做,但我无法想象如何说“只将组件X添加到生成器Y”。我做了这样的事情:

INSTALL(FILES somefile DESTINATION "." COMPONENT static)

但是如何仅将static组件添加到ARCHIVE而不是其他生成器(如DEB和RPM)?

2 个答案:

答案 0 :(得分:2)

最终在CMake列表的帮助下找到了这个。在您的CMakeLists.txt中执行以下操作:

install(PROGRAMS basic.sh DESTINATION "." COMPONENT basic)
install(PROGRAMS optional.sh DESTINATION "." COMPONENT optional)

set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CPackOptions.cmake")

CPackOptions.cmake应该处理ifs。请注意,您必须为您可能需要的任何其他生成器打开CPACK _ * _ COMPONENT_INSTALL:

SET(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
SET(CPACK_DEB_COMPONENT_INSTALL ON)
SET(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)

IF ("${CPACK_GENERATOR}" MATCHES "TGZ")
   SET(CPACK_COMPONENTS_ALL basic optional)
ELSEIF ("${CPACK_GENERATOR}" MATCHES "TBZ2")
   SET(CPACK_COMPONENTS_ALL basic optional)
ELSE()
   SET(CPACK_COMPONENTS_ALL basic)
ENDIF()

答案 1 :(得分:0)

这是我解决此问题的方法,我想在其中将README和LICENSE文件安装到CPack存档输出(ZIP,TGZ等)中:

config.optimization
            .splitChunks(false)