【发布时间】:2014-05-17 06:30:42
【问题描述】:
有没有办法将变量传递给 AC_INIT? 例如
VERSION = 0.1
AC_INIT([my_package],$VERSION)
【问题讨论】:
标签: autotools
有没有办法将变量传递给 AC_INIT? 例如
VERSION = 0.1
AC_INIT([my_package],$VERSION)
【问题讨论】:
标签: autotools
来自手册:
“AC_INIT”的参数必须是静态的,即,不应该有 可以是任何 shell 计算、引号或换行符,但它们可以是 由 M4 计算。这是因为包信息字符串 在 M4 时间被扩展为几个上下文,并且必须给出 在 shell 时相同的文本是否用于单引号字符串, 双引号字符串、引用的 here-documents 或未引用的 这里的文件。 允许使用 'm4_esyscmd' 或 'm4_esyscmd_s' 用于计算版本字符串 每次提交到版本控制系统(事实上,Autoconf 确实 就是这样,对于在 发布)。
这是 autoconf(当前)使用的:
AC_INIT([GNU Autoconf],
m4_esyscmd([build-aux/git-version-gen .tarball-version]),
[bug-autoconf@gnu.org])
如果您不需要从外部来源阅读版本,以下是 GLIB 使用的内容:
m4_define([glib_major_version], [2])
m4_define([glib_minor_version], [41])
m4_define([glib_micro_version], [0])
...
m4_define([glib_version],
[glib_major_version.glib_minor_version.glib_micro_version])
...
AC_INIT(glib, [glib_version], ...)
当然,您必须使用 M4 构造而不是 shell,例如 m4_if()、m4_eval() 等。
【讨论】: