如何在m4_esyscmd中使用m4_define宏定义的变量?

How to use a variable which is defined by m4_define macro in m4_esyscmd?

我想用 configure.ac 中的以下代码做一些类似的事情:

m4_define([product], [NGU29832])
m4_define([version], [R1A1])

然后像这样在 AC_INIT 宏中使用这些变量:

AC_INIT([foo], m4_esyscmd([$(pwd)/modify_version_script.sh $version $product]))

不幸的是,这不起作用,因为 $version$product 在解析为 m4_esyscmd 宏时都是空的。

有人知道怎么做吗?

$version$product在M4Sugar层中不存在:它们是M4变量:

m4_define([product], [NGU29832])
m4_define([version], [R1A1])

AC_INIT([foo], [m4_esyscmd([$(pwd)/modify_version_script.sh version product])])

应该适合你。

我找到了解决方案:

m4_define([product], [NGU29832])
m4_define([version], [R1A1])

AC_INIT([foo], m4_esyscmd([$(pwd)/modify_version_script.sh m4_defn([version] m4_defn([product])))