有没有办法将变量传递给AC_INIT? 例如
VERSION = 0.1
AC_INIT([my_package],$VERSION)
答案 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()
等。