【问题标题】:autoconf AC_CHECK_HEADERS for C++11C++11 的自动配置 AC_CHECK_HEADERS
【发布时间】:2015-11-06 15:57:00
【问题描述】:

我正在尝试使用autoconf 创建配置脚本。一项重要的检查是是否存在特定的头文件。这通常非常简单,在我的 configure.ac 文件中使用以下行。

AC_CHECK_HEADERS("CL/cl2.hpp")

但是,此头文件中的某些代码需要 C++11。因此,在我运行生成的./configure 后,我在config.log 中发现了以下错误。

configure:3166: checking CL/cl2.hpp usability
configure:3166: g++ -c -g -O2 conftest.cpp >&5
In file included from conftest.cpp:52:0:
/usr/include/CL/cl2.hpp:442: error #error Visual studio 2013 or another C++11-supported compiler required

现在我使用的是Debian Stretch,g++ 版本是5.2.1,所以我知道它支持 C++11。如何使用autoconf 创建configure 文件来检查这个头文件?

【问题讨论】:

    标签: debian autoconf


    【解决方案1】:

    您需要在 CXXFLAGS 变量中设置编译器选项以启用 c++11 方言。例如,您可以调用:

    CXXFLAGS=-std=c++11 ./configure
    

    这将导致所有使用 c++ 编译器的 autoconf 运行的测试将 -std=c++11 添加到测试中(并将 iirc 添加到生成的 Makefile 中)。

    要在 autotools 中执行此操作,有一个宏 AX_CXX_COMPILE_STDCXX_11 将测试 c++11 支持(可选或强制),然后设置适当的编译器标志以在您的构建和测试中启用该支持。将此宏放在标题检查之前,标题检查将在 c++11 支持下运行。

    【讨论】:

    • 谢谢,这解决了问题。虽然我要补充一点,我需要安装 autoconf-archive 才能获得 AX_CXX_COMPILE_STDCXX_11 宏。一个后续问题,这个操作系统是否不可知?生成的配置脚本可以在 Mac 或 Windows 系统上运行吗?
    • 另外,有趣的是,config.log 中的下一行检查 .hpp 文件是否存在继续不使用 -std=gnu++11 选项导致警告。不知道为什么。
    猜你喜欢
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多