Cmake 仅在CPack中将文件添加到存档包

Cmake 仅在CPack中将文件添加到存档包,cmake,cpack,Cmake,Cpack,是否可以使用CMake/CPack仅向存档生成器添加一些文件?显然,组件可以做到这一点,但我不知道如何说“仅将组件X添加到生成器Y”。我是这样做的: install(PROGRAMS basic.sh DESTINATION "." COMPONENT basic) install(PROGRAMS optional.sh DESTINATION "." COMPONENT optional) set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_CURRENT_SOU

是否可以使用CMake/CPack仅向存档生成器添加一些文件?显然,组件可以做到这一点,但我不知道如何说“仅将组件X添加到生成器Y”。我是这样做的:

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")
INSTALL(FILES somefile DESTINATION.”组件静态)


但是如何只将
静态
组件添加到存档中,而不添加到其他生成器(如DEB和RPM)?

最终在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_*\u 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()

这就是我解决这个问题的方法,我想在CPack归档输出(ZIP、TGZ等)中安装自述文件和许可文件: