7

プロジェクト用に 2 つの異なるパッケージを作成したいと考えています。

  1. DCM (RCM 固有のモジュールを除くすべてのモジュールを含む)
  2. RCM (特定モジュール)

1. DCM : src/CMakeList.txt

cmake_minimum_required (VERSION 2.8)

add_subdirectory(ecs) # Include all modules

set(CPACK_GENERATOR TGZ)
set(CPACK_PACKAGE_NAME "dcm")
set(CPACK_PACKAGE_VENDOR "AB")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Device Control")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
set(CPACK_PACKAGE_VERSION_BUILD ${BUILD_NUMBER})

set(CPACK_COMPONENTS_ALL DCM RCM )

# Include CPack to introduce the appropriate targets
include(CPack)

2. RCM : src/ecs/mqa/mqa_rcm/CMakeList.txt

set(RCM_SCRIPTS 
commit.sh
install.sh
prepare_for_install.sh
system_check.sh
update_init.sh)

INSTALL(FILES ${RCM_SCRIPTS}
        PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE  WORLD_EXECUTE
        DESTINATION ${RCM_INSTALL_PREFIX}/install
        COMPONENT RCM )
# Create version file
install(FILES "${CMAKE_BINARY_DIR}/version" 
        DESTINATION ${RCM_INSTALL_PREFIX}
        COMPONENT RCM )

試してみる : Linux 仮想マシン プロンプトで。

$make -j4
$make install
$make package

単一のパッケージのみを作成しますDCM-1.90.0-Linux.tar.gz

参照 : CMake Wiki および CPack および StackOverflow

問題 :DCM-1.90.0-Linux.tar.gz 1.と 2. のRCM-1.90.0-Linux.tar.gzパッケージ を作成したい。

私はグーグルで検索しましたが、正確な解決策を見つけることができませんでした。

さらに情報が必要な場合はお知らせください。

よろしくお願いします。

4

2 に答える 2

3

CPACK フラグを ON に設定するだけです。

set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)

直前

include(CPack)

そしてコマンドを実行します。

make
make install
make package

そして、2 つの異なるパッケージを作成します。

于 2015-02-26T05:44:10.367 に答える
0

私はCPackを使用していないので、以下よりも良い解決策があるかもしれません.

私のさまざまなインストールでは、CACHE でいくつかの変数を定義します (たとえば、 : set(INCLUDE_MODULE_XYZ OFF CACHE BOOL "Include the module xyz"))。インストールに何を入れるかを定義します。この変数の値は、ccmake を実行して変更できます。

あなたの場合、最初のパッケージを生成し、ccmake で構成を変更してから、2 番目のパッケージを生成できます (必要な場合)。

于 2015-02-23T12:26:16.213 に答える