检查 configure.ac 中 AX_PYTHON_MODULE 的结果

1 投票
1 回答
677 浏览
提问于 2025-04-15 20:27

在使用m4_ax_python_module.m4这个宏(AX_PYTHON_MODULE)时,你可以在配置阶段知道某个模块是否已经安装。这个宏需要两个参数,第一个是模块的名字,第二个参数如果不为空,就会导致程序退出,这在模块是必需的时候特别有用。

如果你不想让程序因为找不到模块而直接退出,那在configure.ac中怎么测试哪些模块找到了,哪些没有呢?当你运行配置时,它会输出“yes”或者“no”,但我目前只找到这些信息。基本上,如果我在configure.ac中有以下几行:

编辑:在模块名字周围加了方括号

AX_PYTHON_MODULE([json],[])
AX_PYTHON_MODULE([simplejson],[])

那么我该怎么测试这两个模块中哪个找到了呢?

有关这个宏的文档,可以查看http://www.gnu.org/software/autoconf-archive/ax_python_module.html#ax_python_module

1 个回答

1

好的,我找到的最佳解决方案是:

编辑:使用 AS_IF 而不是单纯的 if test

AS_IF([test "x${HAVE_PYMOD_JSON}" = "xno"], 
    AS_IF([test "x${HAVE_PYMOD_SIMPLEJSON}" = "xno"],
        [AC_MSG_ERROR([Requires one of json or simplejson])]))

让我困惑的是,在这个宏里,AS_TR_CPP 会把它的参数转换成 #define 风格的宏,也就是全部变成大写。

撰写回答