我使用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>
答案 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