有没有办法将变量传递给AC_INIT?例如
VERSION = 0.1
AC_INIT([my_package],$VERSION)
Dan*_*lKO 10
从手册:
'AC_INIT'的参数必须是静态的,即不应该有任何shell计算,引号或换行符,但它们可以由M4计算.这是因为包信息字符串在M4时间扩展到几个上下文,并且必须在shell时间提供相同的文本,无论是在单引号字符串,双引号字符串,引用here-documents还是unquoted 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构建,而不是外壳,如m4_if(),m4_eval()等