4

現在、プロジェクトから複数の debian パッケージを生成しようとしています。これに関する私の唯一の問題は、パッケージの名前、説明、グループなどを設定することです。

# --------------------------------------------------------------
# Required CMake version
# --------------------------------------------------------------
CMAKE_MINIMUM_REQUIRED (VERSION 2.8)

# --------------------------------------------------------------
# Project name
# --------------------------------------------------------------
PROJECT (MyProject)


# --------------------------------------------------------------
# Find all source and header files
# --------------------------------------------------------------
FILE (GLOB all_H "*.h")
FILE (GLOB all_SRC "*.cpp")

# --------------------------------------------------------------
# Set compiler flags
# --------------------------------------------------------------
SET (CMAKE_CXX_FLAGS "-Wall -Wextra -O0 -g3")

# --------------------------------------------------------------
# Add a shared library
# --------------------------------------------------------------
ADD_LIBRARY (mylib SHARED ${all_H} ${all_SRC})

# --------------------------------------------------------------
# Configure components
# --------------------------------------------------------------
SET (CPACK_DEB_COMPONENT_INSTALL 1)

# --------------------------------------------------------------
# Install
# --------------------------------------------------------------
INSTALL(TARGETS mylib DESTINATION ../lib COMPONENT main)
INSTALL(FILES ${all_H} DESTINATION ../include COMPONENT dev)

# --------------------------------------------------------------
# CPack package and package_source targets
# --------------------------------------------------------------
SET (CPACK_GENERATOR "TGZ;DEB")
SET (CPACK_SET_DESTDIR ON)

SET (CPACK_PACKAGE_NAME "mypackage")
SET (CPACK_PACKAGE_VENDOR "me")
SET (CPACK_PACKAGE_DESCRIPTION_SUMMARY "this is my package description")

SET (CPACK_DEBIAN_PACKAGE_DESCRIPTION "this is my package description
 here comes detailed description text.")

INCLUDE (CPack)

マニュアルには CPack コンポーネントのプロパティとコマンドがいくつかありますが、すべてのパッケージ/コンポーネントの少なくとも名前と説明を変更するための適切なものや適切な場所が見つからないようです。

INCLUDE(CPack) の前 (エラーが発生します) と後 (無視されるようです) と cpack_add_component()を使用SET (CPACK_COMPONENT_MAIN_DISPLAY_NAME "main display name")してみました。SET (CPACK_COMPONENT_main_DISPLAY_NAME "main display name")

誰かがこれを機能させ、これを行う正しい方法を知っていますか?

4

2 に答える 2

1

ここ数日から、そのような解決策を探しています。最初に私の要件を説明し、次にどのようにして問題を解決したかを説明しましょう。

1 つのプロジェクトから 4 つのパッケージを作成したい

  1. マスター パッケージ: すべてのバイナリ、静的/共有ライブラリ、ヘッダー ファイル、構成ファイル、およびスクリプトが含まれています。
  2. ランタイム パッケージ: アプリケーションの実行に必要な実行可能ファイル、つまりバイナリ、共有ライブラリ、およびスクリプトのみが含まれています。
  3. 構成パッケージ: 基本的なスケルトンと構成ファイルのプレース ホルダーが含まれています。
  4. 開発パッケージ: 共有/静的ライブラリとヘッダー ファイルが含まれています。

マスター パッケージの生成は簡単で簡単です。しかし、その方法を使用すると、他のパッケージを使用できなくなります。そのため、文書やメールのアーカイブに苦労してスクレイピングした後、1 つの解決策または回避策にたどり着きました。

私のソリューションでは、作成するパッケージごとに 1 つの追加のカスタム ターゲットを作成しています。そのターゲットで、そのパッケージにインストールするファイルのリスト(ファイルの絶対位置)を持つ他のcmakeプロジェクトを作成し、そのプロジェクトをビルドし、最後にcpackを呼び出してパッケージを作成します。

これが私の解決策です。

これよりも優れた/スケーラブルなソリューションがあるかもしれません。

于 2016-09-09T13:13:14.317 に答える