23

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

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

只是添加-std=c++0xAM_CXXFLAGS不是很好的解决方案,因为我想把编译器在 C++11 模式下编译的负担交给 autoconf 开发人员,而不是我。

4

2 回答 2

31

您正在寻找的东西已经被制作为autoconf-archiveAX_CXX_COMPILE_STDCXX_11的一部分。如果没有可用的 C++11 支持,它将向环境添加所需的选项(以前通过,现在通过)并出错。CXXFLAGSCXX

于 2012-08-10T22:59:03.360 回答
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
于 2018-03-27T16:56:33.677 回答