2016-11-06 13 views
1

出力されたパッケージファイルに正しいバージョン番号が含まれるようにCPack設定を編集しようとしています。しかしそれだけではありません。私は、CMake/CPackに、バージョン番号が更新されるすべての場所を設定したいと思います。 .soファイルも設定する必要があります。それが必要なものは何でも。CMAKE/CPACKプロジェクトのバージョン番号をidomaticallyに設定する方法は?

私が座っている場所から、CPack documentation appears to be telling us自分自身を繰り返す。

私は何もしない場合は、出力ファイルはそうのようなものです:

mystuff-0.1.1-Linux.tar.gz 

はのは、バージョン番号は1.2.3であるべきとしましょう。

私は、これはすべてのバージョン番号が変更させるように最小限のCPACKの設定であると思うだろう - と私は私のCMakeLists.txtファイルに次の行を配置:

SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "My app is great") 
SET(CPACK_PACKAGE_VENDOR "My Name") 
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") 
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") 

SET(CPACK_PACKAGE_VERSION_MAJOR "1") 
SET(CPACK_PACKAGE_VERSION_MINOR "3") 
SET(CPACK_PACKAGE_VERSION_PATCH "2") 

私はビルドすると、出力を私は自分自身を繰り返し、これを行うと、ファイルはまだmystuff-0.1.1-Linux.tar.gz

です:

SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") 

は今、その変数が設定されているが、ファイルがまだです3210

私も、私はバージョン番号-状態を再度しなければならないの他のどのような場所CPACK_PACKAGE_FILE_NAME

を変更しなければならないようですか?

これは慣用的ではありません。私はこれを自動的にするために何かが欠けているに違いない。以前の時点で変数を指定するはずですか?私はCPackConfig.cmakeファイルを含むインターネット上のいくつかのプロジェクトも見ています - ファイルには上書きが含まれていますが、それでもやはり繰り返しているものがあります。

This bugにも同じことが言及されています。明らかに、彼らは私たちが自分自身を繰り返すことを望む。 (2015年現在)しかし、たとえそれがあったとしても、誰かが回避策を見つけたのか疑問に思っていましたか?

回避策がない場合は、自動的に正しく設定されるようにすべての変数を再設定する方法はありますか? - $ {

SET(CPACK_PACKAGE_FILE_NAME「$ {CPACK_PACKAGE_NAME}:たとえば、次の操作を実行すると、変数

SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") 

According to the documentationを使用して、バージョン番号を構成するための方法である、ファイル名は次のように構成されておりCPACK_PACKAGE_VERSION} - $ {CPACK_SYSTEM_NAME} ")

おそらく、再設定が必要な他の変数があります。もし私がすべてを言い返す必要があるなら、私は何を完全にするために言い直す必要がありますか?

+1

ようcpackバージョンを設定することができ、あなたの質問から更新プログラムを削除し、その答えとして、それを投稿してください。それが可能になったら、あなたの答えを受け入れてください。そうすれば、あなたの質問に答えられます。 – usr1234567

+0

私はそれを言い換えるつもりです。 – 010110110101

+0

私は自分自身を繰り返すことを伝えるドキュメンテーションのCMake_部分に_Using CPackは表示されません。 CMake_の部分はありませんが、ここでは関係ありません。また、私はバグレポートがバグではないことを理解していますが、CPACK_PACKAGE_FILE_NAMEが暗黙的に設定されている場合、バグのレポーターは誤解しています。 – pepan

答えて

1

あなたはCPACK _...変数を設定後に次の行を持っていることを確認してください:

include (CPack) 

をこれはCPACK_PACKAGE_FILE_NAME等が自動的に設定されているスポットなので、バージョンです変数(例:CPACK_PACKAGE_VERSION_MAJOR)は、この時点ですでに設定されている必要があります。

+0

これは機能しますが、私はもう少し慣れ親しんでいる解決策を好むでしょう。 (おそらく 'PROJECT(myapp VERSION 1.2.3.4)'フィールドからバージョン番号を取得するかもしれませんが、これは答えとしてマークしています。 – 010110110101

1

VERSIONフィールドを持つPROJECT()コマンドのドキュメントを参照してください。私はそれがCPackに配線されているかどうかはわかりませんが、少なくともそれはプロジェクトバージョンを設定するための慣用的な場所です。

https://cmake.org/cmake/help/v3.0/command/project.html

+1

CPack変数には影響しませんでしたが、私はそれを試しました。これを完了するために、私はそれらのCPack_ *変数をどのように再計算するか把握する必要があります。 – 010110110101

+0

リンク先のdocによると、VERSIONはプロジェクトではなく、_compiler_バージョンを意味します。 – Kokos

+0

いいえ、それはリンクされた文書ではっきりしていませんが、プロジェクトのバージョンです。 – glyphin

0

あなたがhttps://cmake.org/cmake/help/v3.0/command/project.html経由でプロジェクトのバージョンを設定する場合は、

set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) 
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) 
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) 
include(CPack) 
関連する問題