【问题标题】:autotools: how to include my own m4 macro in configure.acautotools:如何在 configure.ac 中包含我自己的 m4 宏
【发布时间】:2016-05-24 14:38:12
【问题描述】:

在我的项目中,我有文件夹 m4。在这个文件夹中,我有 ax_cxx_version.m4 文件,其中包含 AX_CHECK_CXXFLAGS 宏。

然后我在 autoconf.ac 中包含 m4 文件夹:

AC_CONFIG_MACRO_DIR([m4])

并执行 autoconf。

当我运行配置脚本时,它会因流动错误而失败:

checking complex usability... yes
checking complex presence... yes
checking for complex... yes
checking size of int64_t... 8
checking for long long int... yes
./configure: line 7235: syntax error near unexpected token `-std=c++0x'
./configure: line 7235: `AX_CHECK_CXXFLAGS(-std=c++0x -pedantic -Wall)'

如果我将我的宏添加到 aclocal.m4,那么一切都会运行良好。

包含我自己的宏的正确方法是什么?

【问题讨论】:

  • 您是否尝试将参数括在方括号中? AX_CHECK_CXXFLAGS([-std=c++0x -pedantic -Wall])
  • 问题是运行autoconf后配置脚本中没有AX_CHECK_CXXFLAGS函数。所以不管我怎么称呼 AX_CHECK_CXXFLAGS。

标签: autotools autoconf automake m4


【解决方案1】:

问题在于AC_CONFIG_MACRO_DIR 实际上并没有设置包含路径,而是让aclocal 生成正确的文件。但是aclocal 是automake 的一部分,如果你只是执行autoconf 它不会被调用。

您可以开始调用autoreconf 而不是autoconf 来重新生成文件,这应该可以解决问题。或者,如果您不想依赖 automake,可以使用 m4_include 的许多其他技巧。

Autotools Mythbuster 上提供了有关此事的相关(由我编写)文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-16
    • 2011-07-15
    • 2015-11-04
    • 2023-03-09
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多