我有一個項目,我一直在工作一段時間,總是在調試。 今天我試着建立一個版本,並且它沒有編譯出一些非常奇怪的錯誤。 而調試編譯沒有任何警告,發佈拋出:GCC C++ 11調試版本,發佈失敗
/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啓用:
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")
如何追蹤是什麼原因造成版本編譯錯誤?
編輯我使用的是Cmake 2.8,並試圖用gcc-4.6.3和4.7.2編譯,兩者都有相同的問題。
編輯#2使用-std = C++ 0x而不是C++ 11時問題仍然存在。
編輯#3降級到g ++ 4.6並沒有太大的幫助。錯誤現在只是改爲:
/usr/include/c++/4.6/bits/c++0x_warning.h:32:2:etc...
編輯#4我已刪除<thread>
最先引起的問題。然後是<mutex>
和<atomic>
。現在它是使用std::shared_ptr<Blah>
的任何一段代碼。 在我看來,如果Release不想用C++ 11進行編譯。這是故意的嗎?