【发布时间】:2011-12-21 04:33:43
【问题描述】:
目前我的项目有以下简单的树:
./Makefile.am
./configure.ac
./README
./src/main.cpp
./src/Makefile.am
./bin
我正在尝试遵循以下教程:
http://www.gnu.org/software/automake/manual/automake.html#Hello-World
如何指示 configure.ac 使用 C++0x 扩展?特别是如果 main.cpp 文件中的 hello-world 行如下:
cout << ([] () {return "Hello, World!";}) () << endl;
发出“make”会导致错误。
【问题讨论】:
-
您使用的是哪个编译器?如果是 GCC,你需要 4.6 或更高版本的 lambda,那么它应该是修改 makefile 以添加标志以将编译器置于 c++0X 模式的情况,或者 --std=c++0x 或 --std =gnu++0x 取决于你是否想要 c++0x 的 GNU 方言。
-
@awoodland,我从另一个线程中尝试了您的建议。我收到以下错误:“./configure: line 2962: syntax error near unexpected token `-std=c++0x,'” 之后突出显示的错误行如下:AX_CHECK_COMPILE_FLAG(-std=c++0x, CXXFLAGS="$CXXFLAGS -std=c++0x")。前面的行说“检查 g++ 的依赖样式... gcc3。”我认为这就是问题所在。但我安装了 GCC 4.6.2,它是 GCC 的默认版本。 (运行 gcc -v 返回版本 4.6.2。)
-
@Shredderroy - 编译器版本对于 autoconf 的东西并不重要,但您确实需要使用
[ ]引用 -std=c++0x,就像我在示例中所做的那样。如果您不熟悉 autotools,您可能对 Autoconf quoting 感兴趣。 -
以防万一,我使用的是 Fedora 16 和 KDE 4.7.3。