2017-04-20 8 views
0

動的なgitベースのバージョン番号をautoconfプロジェクトに割り当てる方法を教えてください。 のAutoconfはautoconf管理プロジェクトにGitベースのバージョンを挿入するには?

AC_INIT([Title],[version],[name]) 

AC_INITのドキュメントを静的な文字列引数を必要とするものが シェルベースのバージョンを提供するためにM4を使用できることを述べています。 M4は私のケンを超えています。私はこの4.6.6-alpha07-9-ga3e01a8のようなものを生成し、このコマンド

version=`git describe --abbrev=7 --dirty --always --tags` 

の結果に応じてバージョンに私の ソフトウェアをしたいと思います。

高レベルの回答を理解できない場合があります。私は、 " をカットし、これをautoconf.acやacinclude.m4に貼り付ける"のような解決策が必要です。

助けてください。

AC_INIT([Title], [m4_esyscmd_s([git describe --abbrev=7 --dirty --always --tags])]) 

あなたのために働く必要がありますについてはどのように

答えて

1

+0

ありがとうございました。部分的に動作し、configureが失敗する原因になります。理由を理解するのは難しいです。まだ調べています... –

+0

@CharlieZender: 'm4_esyscmd'の周りの' [] 'を削除し、その結果を' tr'で実行して末尾の改行を取り除いてください: 'AC_INIT([Title]、m4_esyscmd([git describe-略語= 7 - ダーティー - 常時 - タグ| tr -d '\ n'])) '。 –

+0

これは機能します!私が望むバージョンの文字列で完了を構成します。驚くほど多くのプロジェクトでGitベースのバージョンタグは使用されていません。 ldav1sの回答が編集されない限り、この回答を正しいとマークする必要はありませんか... –

1

だけAC_INITバージョンのm4_esyscmdgit describeを実行しているが、まだいくつかのことが求められるように葉:あなたはdistのtarballをビルドする場合

  • は、どのバージョンを使用するように? git describe有用な出力はありません。

  • 変更を確定したばかりの場合は、どのバージョンを使用しますか? configureのバージョンをgit describe, から更新するか、既存のバージョンを使用してビルドを続行しますか?私自身のパッケージ(例えばndim-utilsをなど)については

は、私はこれらの問題を解決した

  • version-stampから使用するバージョンを決定し、特別なbuild-helpers/package-versionスクリプトを持っていることによって(そして、より少数)ファイルが見つかった場合はgit describeです。 configure.acAC_INITm4_esyscmdそのスクリプト。 DISTのtarball、現在git describe出力がconfigureが保存されているものと異なるかどうかをチェックして、いくつか他のもののためにversion-stampファイルを生成し、トップレベルMakefile.amから含めるように特別なbuild-helpers/package-version.mkを持つ

  • configure内に格納されているバージョンを必要に応じて更新するGNUmakefile.inがあります。

おそらく、その解決策で対処されたいくつかの問題を忘れていたでしょう。

私はこれらのスクリプトがあなたのプロジェクトにコピーする準備ができているとは確信していませんが、ここでもう少し検討すべきことがあります。

関連する問題