lve*_*lla 13 c++ autoconf c++11
我有一个通过Autoconf配置的项目,我想在这个项目中开始使用C++ 11功能.如何始终启用"-std = gnu ++ 0x"开关并支持配置时检查的功能?
Geo*_*roy 19
你检查过 ax_cxx_compile_stdcxx_11 吗?
我认为这正是你想要的.
Fle*_*exo 16
你可以这样做AX_CHECK_COMPILE_FLAG,例如:
AX_CHECK_COMPILE_FLAG([-std=c++0x], [
CXXFLAGS="$CXXFLAGS -std=c++0x"])
Run Code Online (Sandbox Code Playgroud)
(这里需要注意的AC_LANG是C++,而不是C,因为它可以使用gcc作为C而C++使用其他内容,反之亦然).
我认为最简单的方法是添加:
CXXFLAGS="$CXXFLAGS -std=c++0x"
在 AC_PROG_CXX 之前的 configure.ac 中。如果编译器不接受 -std=c++0x,则配置将失败并显示“C++ 编译器无法创建可执行文件”。这不是最好的错误消息,但它确保如果配置成功,构建将成功。为了获得更好的错误信息,您可以检查编译器是否接受 AC_PROG_CXX 之后的标志。在任何一种情况下,如果编译器不提供必要的功能但您的软件需要它,您希望配置失败。
请注意,如果用户在运行配置时未设置该变量,则在 AC_PROG_CXX 之前设置 CXXFLAGS 具有防止 CXXFLAGS 的默认设置的不良副作用。出于这个原因,通常不建议在配置中设置 CXXFLAGS,因此最好在 AC_PROG_CXX 之后检查标志(例如使用 awoodland 的解决方案)——只需确保在 AX_CHECK_COMPILE_FLAG 的第三个参数中添加一个 AC_MSG_ERROR 以便如果功能不可用,则配置失败。