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_*
函数用于要在配置时更改的内容。
这是我的一些代码 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_*
函数用于要在配置时更改的内容。