[英]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_esyscmd
為AC_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_INIT
將m4_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.