GCC C++11 Debug builds, Release fails
我有一个已经工作了一段时间的项目,始终处于调试状态。
今天,我尝试构建一个发行版,但是它无法编译并引发一些非常奇怪的错误。
在调试时不发出任何警告的情况下,发布引发:
1 | /usr/include/c++/4.7/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. |
两个CMake构建都启用了c 11:
1 2 | set(CMAKE_CXX_FLAGS_DEBUG"${CMAKE_CXX_FLAGS_DEBUG} -std=gnu++11 -Wall -g") set(CMAKE_CSS_FLAGS_RELEASE"${CMAKE_CXX_FLAGS_RELEASE} -std=gnu++11 -Wall") |
如何跟踪是什么导致了Release中的编译错误?
EDIT我正在使用Cmake 2.8,并尝试使用gcc-4.6.3和4.7.2进行编译,并且两者都存在相同的问题。
EDIT#2使用-std = c 0x而不是c 11时,问题仍然存在。
EDIT#3降级至g 4.6并没有太大帮助。该错误现在简单地更改为:
1 | /usr/include/c++/4.6/bits/c++0x_warning.h:32:2:etc... |
EDIT#4我删除了首先引起问题的
在我看来,Release根本不想使用C 11进行编译。这是故意的吗?
我敢打赌,问题出在这一行:
1 | set(CMAKE_CSS_FLAGS_RELEASE"${CMAKE_CXX_FLAGS_RELEASE} -std=gnu++11 -Wall") |
看,您设置了变量
我已经解决了这个问题,只需删除CXX_FLAG,并使用CMake的添加定义即可:
1 | add_definitions("-std=gnu++11") |
我不知道为什么这能使它起作用,为什么调试能起作用但不能发布,但是却起了很大的作用。