在AC_INIT中使用变量

时间:2014-04-04 19:19:16

标签: autotools

有没有办法将变量传递给AC_INIT? 例如

VERSION = 0.1
AC_INIT([my_package],$VERSION)

1 个答案:

答案 0 :(得分:9)

从手册:

  

'AC_INIT'的参数必须是静态的,即不应该     是任何shell计算,引号或换行符,但它们可以是     由M4计算。这是因为包信息字符串     在M4时间扩展到几个上下文,并且必须给出     shell时的相同文本是否用于单引号字符串,     双引号字符串,引用此处 - 文档或未引用     这里的文档。 允许使用'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()等。