自动工具检查 C++11

Autotools check for C++11

本文关键字:C++11 检查 工具      更新时间:2023-10-16

我使用AX_CXX_COMPILE_STDCXX_0X(可以在autoconf-archive上查看)来检查编译器的c ++ 11功能。它正确地确定-std=c++0x必需的,但不会将其添加到CXXFLAGS 中。我查看了宏源,它实际上会检查但随后恢复以前的标志。

我应该怎么做才能CXXFLAGS设置为能够编译 c++11 源代码?

仅仅向AM_CXXFLAGS添加-std=c++0x并不是一个好的解决方案,因为我想把使编译器以 C++11 模式编译的负担放在 autoconf 开发人员身上,而不是我身上。

您正在寻找的内容已经作为 AX_CXX_COMPILE_STDCXX_11 ,自动会议存档的一部分。它会将所需的选项添加到环境中(以前通过 CXXFLAGS,现在通过 CXX),如果没有可用的 C++11 支持,则出错。

通常,

您可以编译一个简单的代码并根据编译结果设置变量

DIALECT="-std=c++14"
echo 'int main() {return 0;}' > ./log.cpp && $CXX -std=c++14 ./log.cpp || $DIALECT="no"
if test $DILAECT = no; then
    AC_MSG_ERROR([c++ compiler does not support c++14])
else
    echo $DILAECT
fi