Autotools检查C ++ 11

时间:2012-08-10 21:14:04

标签: c++ c++11 autotools autoconf

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

如何让CXXFLAGS设置为能够编译c ++ 11源代码?

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

2 个答案:

答案 0 :(得分:29)

您正在寻找的内容AX_CXX_COMPILE_STDCXX_11已成为autoconf-archive的一部分。它将向环境添加所需的选项(以前通过CXXFLAGS,现在通过CXX),如果没有可用的C ++ 11支持,则会输出错误。

答案 1 :(得分:1)

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

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