autotools - 如何检测m4宏是否存在/可以调用

标签 autotools autoconf m4

我们正在开发一个使用 autotools 的软件包(准确地说是 autoconf 2.69 和 automake 1.13.3)。这个包需要 wxwidgets,这个库提供了自己的 m4 文件,以允许在最终安装系统中测试 wxwidgets 的安装。 wxwidgets 最近将版本从 2.8 更改为 3.0,在此更改中,他们还更改了用于确定可用性的宏(即宏从 AM_PATH_WXCONFIG 更改为 WX_CONFIG_CHECK)及其参数化。这也意味着如果我们从我们的包中分发源代码并且外部开发人员想要重建配置,那么 configure.ac 文件应该知道应该使用两者中的哪一个。

所以问题是:我们的包是否有机会在执行之前检查 m4 宏是否存在?如果这是不可能的,那么我们应该将 wxwidgets 中的 m4 文件包含到我们的包中吗?

最佳答案

正如您在评论中建议的那样,使用 m4_ifdef :

m4_ifdef([AM_PATH_WXCONFIG], [
    AM_PATH_WXCONFIG(parameters)
], [
    m4_ifdef([WX_CONFIG_CHECK], [
        WX_CONFIG_CHECK(parameters)
    ], [
        AC_MSG_ERROR([You need to install the wxWidgets development package.])
    ])
])

关于autotools - 如何检测m4宏是否存在/可以调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31608480/

相关文章:

c - 如何编译同时适用于 libcrypto.so.0.9.8 和 libcryto.so.1.0.0 的二进制文件?

bash - M4:如何从文件中删除脚本中的前导空格?

bash - GNU m4 安装在 Ubuntu 上的 Windows 10 bash 上失败

c++ - 错误输出包括最后几行代码

c++ - Python 嵌入 C++

build - 如何不在输出中打印生成文件中的注释

c - autotools:使用另一个目录中的代码进行编译

makefile - CFLAGS 与 CPPFLAGS

c - 在 automake 中使用 LIBADD 时,libtool 链接不正确

c - 将 Autotools 用于具有平台特定源代码的项目