3

CMake/CPack を使用して ARCHIVE ジェネレーターにのみいくつかのファイルを追加することは可能ですか? どうやらコンポーネントがそれを行うようですが、「コンポーネント X のみをジェネレーター Y に追加する」と言う方法がわかりません。私はこのようなことをしました:

INSTALL(FILES somefile DESTINATION "." COMPONENT static)

しかし、staticコンポーネントを ARCHIVE のみに追加し、DEB や RPM などの他のジェネレーターには追加しない方法は?

4

2 に答える 2

4

最終的に、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()
于 2015-09-25T18:10:38.953 に答える