如何在 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 and/or acinclude.m4".
感谢任何帮助。
怎么样:
AC_INIT([Title], [m4_esyscmd_s([git describe --abbrev=7 --dirty --always --tags])])
应该适合你。
m4_esyscmd
中的 运行 git describe
对于 AC_INIT
版本还有一些不足之处:
如果你构建一个 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
可以在必要时从 git describe
更新存储在 configure
内部的版本。
而且我可能忘记了该解决方案中解决的一些问题。
我不确定这些脚本是否已准备好复制到您的项目中,但我想在这里提一下,还有一些事情需要考虑。
如何为 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 and/or acinclude.m4".
感谢任何帮助。
怎么样:
AC_INIT([Title], [m4_esyscmd_s([git describe --abbrev=7 --dirty --always --tags])])
应该适合你。
m4_esyscmd
中的 运行 git describe
对于 AC_INIT
版本还有一些不足之处:
如果你构建一个 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
可以在必要时从git describe
更新存储在configure
内部的版本。
而且我可能忘记了该解决方案中解决的一些问题。
我不确定这些脚本是否已准备好复制到您的项目中,但我想在这里提一下,还有一些事情需要考虑。