簡體   English   中英

如何在autoconf管理的項目中插入基於Git的版本?

[英]How to insert Git-based version in autoconf-managed project?

如何為autoconf項目分配動態的基於git的版本號? Autoconf需要一個靜態字符串參數

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

AC_INIT文檔說可以使用M4提供基於shell的版本。 M4超出了我的范圍。 我想根據此命令的結果對我的軟件進行版本控制

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

這產生類似4.6.6-alpha07-9-ga3e01a8

我可能不理解高級答案。 我需要一個解決方案,例如“將其剪切並粘貼到您的autoconf.ac和/或acinclude.m4”。

任何幫助贊賞。

怎么樣:

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

應該適合你。

只需在m4_esyscmdAC_INIT版本運行git describe仍然有一些不足之處:

  • 如果你構建一個dist tarball,使用什么版本? 根本沒有git describe有用的輸出。

  • 如果您剛剛提交了更改,可以使用哪個版本? 您是從git describe更新configure版本,還是繼續使用現有版本構建?

對於我自己的包(例如ndim-utils ),我已經解決了這些問題(以及更多)

  • 有一個特殊的build-helpers/package-version腳本,用於確定要在版本version-stamp文件中使用的version-stamp如果找到)或git describe configure.ac AC_INITm4_esyscmd該腳本。

  • 從頂級Makefile.am包含一個特殊的build-helpers/package-version.mk ,它為dist tarball生成一個version-stamp文件,檢查當前git describe輸出是否與configure存儲的不同,以及一些其他事情。

  • 有一個GNUmakefile.in可以在必要時更新git describe存儲在configure internals中的版本。

我可能已經忘記了該解決方案中解決的一些問題。

我不確定那些腳本是否已准備好復制到您的項目中,但我想在此提及還有一些需要考慮的事項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM