Autoconf m4_bmatch 无法使用变量

Autoconf m4_bmatch not working with variable

这是我的一些代码 configure.ac:

THIS="h5cc"
AC_MSG_WARN([$THIS])
AC_MSG_WARN(m4_bmatch([h5pcc],
         [h5pcc], [parallel],
         [h5cc], [serial],
         [neither]
         ))
AC_MSG_ERROR(m4_bmatch([$THIS],
         [h5pcc], [parallel],
         [h5cc], [serial],
         [neither]
         ))

autoconf 然后 configure,结果是:

configure: WARNING: h5cc
configure: WARNING: parallel
configure: error: neither

据我所知,这不应该发生,对吧?我错过了什么?

您在配置中混合了 M4 代码,但 m4 仅在扩展前执行(即当您 运行 autoconf 时),而 THIS=h5cc 是 shell由您的 shell 执行的构造(当您 运行 ./configure)。

所以 m4_bmatch 看到的是文字 $THIS 而实际上两者都不是。

简短版本,不要将 m4_* 函数用于要在配置时更改的内容。