如何为AutoConf项目分配动态的,基于GIT的版本号?AutoConf需要一个静态字符串参数
AC_INIT([Title],[version],[name])
ac_init文档说,可以使用M4提供基于壳的版本。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])])
应该为您工作。
AC_INIT
版本中仅在m4_esyscmd
中运行git describe
,仍然需要一些东西:
-
如果您构建Dist Tarball,可以使用什么版本?这里根本没有
git describe
有用的输出。 -
如果您刚刚进行了更改,可以使用什么版本?您是否从
git describe
更新configure
版本,或者只是继续使用现有版本构建?
对于我自己的包装(例如ndim-utils(,我已经解决了这些问题(还有一些(
-
具有特殊的
build-helpers/package-version
脚本,该脚本确定从version-stamp
文件中使用的版本,或git describe
。configure.ac
AC_INIT
将m4_esyscmd
脚本。 -
拥有一个特殊的
build-helpers/package-version.mk
,要包括从顶级Makefile.am
中生成用于DIST TARBALLS的version-stamp
文件,检查当前git describe
输出是否与configure
存储的内容有所不同,还有其他一些内容。 -
具有
GNUmakefile.in
,该CC_19在必要时更新configure
内部存储的版本。
我可能已经忘记了该解决方案中解决的一些问题。
我不确定这些脚本已经准备好将其复制到您的项目中,但是我想在这里提到还有一些要考虑的事情。