14

ここで説明されている GXX_EXPERIMENTAL ハックを使用して、適切な構文の強調表示を有効にできることを知っています: Eclipse CDT インデクサーは C++11 コンテナーを認識しません

しかし、cmake でプロジェクトを生成するときは、プロジェクトの設定にまったく手を加える必要はないと思います。

そう。もっと簡単な解決策はありますか?

4

3 に答える 3

23

答えはとても簡単です。

eclipse cdt ジェネレーターは、シンボルの解析時に add_definitions(...) で追加された定義を無視します。代わりに、CMAKE_CXX_COMPILER_ARG1 を使用します。cmake を呼び出すときに -DCMAKE_CXX_COMPILER_ARG1=-std=c++11 を追加するだけです。

コマンドラインからのプロジェクト ファイルの生成:

cmake ../../src -G"Eclipse CDT4 - MinGW Makefiles" -DCMAKE_ECLIPSE_VERSION=4.2 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER_ARG1=-std=c++11

cmake gui からのプロジェクトの生成:

- Select source and build directory.
- now BEFORE hitting configure or generate. Press "Add Entry" and add a new entry. Name:CMAKE_CXX_COMPILER_ARG1 Type:STRING Value:-std=c++11
- press Generate and create the Eclipse project

初めて構成または生成する前に、CMAKE_CXX_COMPILER_ARG1 を事前に設定することが重要です。

それでおしまい。プロジェクトは正しいシンボルで生成されます。インデクサー、構文の強調表示、オートコンプリートは、プロジェクトの設定を手動で変更しなくても意図したとおりに機能するはずです。

于 2013-08-21T13:10:38.393 に答える
3

cmake のバージョン 3.1 では、C++11 サポートをアクティブ化できる新しい変数 CMAKE_CXX_STANDARD が導入されました。次のようなことを試してください:

cmake ../../src -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_CXX_STANDARD=11

これは、生成された Eclipse プロジェクトに引き継がれているようです。verison 3.2.0-rc2 で試してみると、Eclipse は std::shared_ptr<> のような C++11 機能を認識しました。

いくつかのドキュメント リンク:

于 2015-03-10T01:32:44.623 に答える