如何为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])])
应该适合你。
在git describe
中为m4_esyscmd
版本运行AC_INIT
仍然有一些不足之处:
git describe
有用的输出。configure
更新git describe
版本,还是继续用现有版本构建?对于我自己的软件包(例如ndim-utils),我已经解决了这些问题(以及其他一些问题)
build-helpers/package-version
脚本,用于确定version-stamp
文件中使用的版本(如果找到)或git describe
。 configure.ac
AC_INIT
将m4_esyscmd
那个剧本。build-helpers/package-version.mk
包括从顶级Makefile.am
生成一个version-stamp
文件的dist tarballs,检查当前git describe
输出是否与configure
存储的不同,以及其他一些东西。GNUmakefile.in
更新存储在configure
内部的版本必要时从git describe
。我可能已经忘记了该解决方案中解决的一些问题。
我不确定那些脚本是否已准备好复制到您的项目中,但我想在此提及还有一些需要考虑的事项。