C++ 自动工具检查C++;11

C++ 自动工具检查C++;11,c++,c++11,autotools,autoconf,C++,C++11,Autotools,Autoconf,我使用AX\u CXX\u COMPILE\u STDCXX\u 0X(可以查看autoconf归档)检查编译器的c++11功能。它正确地确定-std=c++0x是必需的,但不会将其添加到cxflags。我查看了宏源代码,它实际上检查了,但随后恢复了以前的标志 我应该怎么做才能将cxflags设置为能够编译c++11源代码 仅仅将-std=c++0x添加到AM_cxflags并不是一个好的解决方案,因为我想把让编译器以c++11模式编译的负担放在autoconf开发人员身上,而不是放在我身上。您

我使用
AX\u CXX\u COMPILE\u STDCXX\u 0X
(可以查看autoconf归档)检查编译器的c++11功能。它正确地确定
-std=c++0x
是必需的,但不会将其添加到
cxflags
。我查看了宏源代码,它实际上检查了,但随后恢复了以前的标志

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


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

您正在寻找的东西已经作为一部分被制作出来了。它将向环境中添加所需的选项(以前通过
cxflags
,现在通过
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

configure.ac:15:error:ac\u LANG\u ASSERT:当前语言不是C++:C.././lib/autoconf/LANG.m4:156:ac\u LANG\u ASSERT从。。。m4/ax\U cxx\U compile\U stdcxx\U 11。m4:48:ax\U cxx\U compile\U stdcxx\U 11从。。。configure.ac:15:顶级自动M4TE:/usr/bin/m4失败,退出状态:1 aclocal:error:/usr/bin/autom4te失败,退出状态:1 autoreconf:aclocal失败,退出状态:1
我将其放在
ac\u PROG\u CXX
之后。我做错了什么?很抱歉这么长时间的评论。我找不到格式化它的方法。我在C++之前添加了< C++ >代码> AcxLang[[c+] ] />代码>,但我假设它是由代码> > AcPro程序CXXX < /C> > @ @ ILUTIOSIFORE <代码> ACYPROGYCXX不应该这样做,因为它会把C和C++检查的配置脚本弄乱。大多数autoconf检查都依赖于C。添加现有的AC_LANG是正确的做法。这里的问题:ax_cxx_compile_stdcxx_11.m4应该设置CXXFLAGS(按原样)还是AM_CXXFLAGS?问题是,我无法在生成行上进行CXXFLAGS的用户级设置,例如:make CXXFLAGS=“-g-O0-Wall”失败,因为-std=c++11标志丢失。为了使其正常工作,我还安装了autoconf archive,据我所知,宏“存在”的地方就是autoconf archive。