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 が有効になっています。

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 でコンパイル エラーの原因を追跡するにはどうすればよいですか?

編集私はCmake 2.8を使用しており、gcc-4.6.3および4.7.2でコンパイルしようとしましたが、どちらも同じ問題を抱えています。

EDIT#2 c++11 の代わりに -std=c++0x を使用すると問題が解決しません。

EDIT#3 g ++ 4.6へのダウングレードはあまり役に立ちませんでした。エラーは単純に次のように変更されました。

/usr/include/c++/4.6/bits/c++0x_warning.h:32:2:etc...

EDIT#4<thread>最初に問題を引き起こしたものを削除しました。それからそれはでし<mutex><atomic>。これは、 を使用する任意のコードですstd::shared_ptr<Blah>。Release が C++11 でコンパイルすることをまったく望んでいないように思えます。これはわざとですか?

4

2 に答える 2

2

問題は次の行にあると思います。

set(CMAKE_CSS_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=gnu++11 -Wall")

ほら、変数を設定しますCMAKE_CSS_FLAGS_RELEASE。代わりに変数を設定したかっただけかもしれませんCMAKE_CXX_FLAGS_RELEASE。これは、リリース モードで c++11 が有効になっていない理由を説明します。

于 2013-06-04T08:37:46.640 に答える
1

CXX_FLAG を単純に削除し、CMake の追加定義を使用して問題を修正しました。

add_definitions("-std=gnu++11")

なぜこれが機能したのか、なぜデバッグが機能したのにリリースが機能しなかったのかはわかりませんが、大きな違いがありました.

于 2013-06-04T02:56:37.443 に答える