web-dev-qa-db-ja.com

EclipseCDTインデクサー-未解決のインデクサを解決する方法

複数のプロジェクトがあるワークスペースがあり、すべて問題なくコンパイルできます。ただし、一部のプロジェクトでは、インクルードが未解決であるため、未解決のシンボルについてエディターで多くの警告が表示されます。ほとんどは、ワークスペース内の他のプロジェクトまたはサードパーティライブラリからのヘッダーです。

グーグルはこれがインデクサーの問題であることを示唆していますが、それを修正する方法の首尾一貫した説明は見つかりませんでした-これらのライブラリへのパスをインデクサーのPATHに追加する必要があると思いますが、オプションが表示されませんそれを行います(私はJunoを使用しています)。

CDTのインデクサーを構成する方法を誰かに説明してもらえますか?

また、2つのプロジェクトでSTLヘッダーの未解決のインクルード警告が発生しています。一部のSTLヘッダーは解決されますが、他のヘッダーは解決されません。リストは2つのプロジェクト間で同じではないようです(1つはvectorとiostreamのようなものを検出しますが、sstreamやstringは検出せず、もう1つはiostreamも検出しません) 。

関連する可能性があります:これらはC++プロジェクトですが、すべてのファイル拡張子は.cです。 GCC Cコンパイラコマンドを「g ++」に変更してコンパイルしましたが、それに対処するためにインデクサー設定にも何かを行う必要があると思いますか?

12
jam

わかりました。この問題を修正しました。

  1. ワークスペース内の他のプロジェクトからの未解決のインクルードとサードパーティライブラリは、他のプロジェクトを参照として追加することで解決されました。インクルードリストに場所を追加したので、コンパイラーはどこを見ればよいかを知っていたと思いますが、インデクサーはそうではありませんでした(おそらく、Eclipseがヘッダーを1回だけ処理したためですか?)

  2. STLからの未解決のインクルードは、実際にはC++であったすべての.cファイルを.cppに変更することで修正しました。コンパイルコマンドを「g ++」に変更するだけでは、プロジェクトをC++として扱うようにインデクサーに指示するのに明らかに十分ではありませんでした。

1)の場合、未解決のインクルードエラーを削除するために、最初に参照されたプロジェクトのインデックスをクリーンアップ/再構築する必要がありました。

6
jam

ワークスペースでプロジェクトを右クリックし、Properties-> C++ General-> Paths and Symbolsを選択してから、特定のコンパイラのインクルードとシンボルを追加し、ライブラリを追加し、その他の必要なものを利用可能なタブ。その後、Applyを押します-インデックスの再作成が開始され、問題は解消されます。

5
Alexandru C.

プロジェクトがビルドされるという同様の問題がありましたが、EclipseKeplerに未解決のインクルードが表示されました。

私の場合、既存のARMプロジェクトを取得し、別のツールチェーンを使用するカスタムビルド構成を作成しました。新しいビルド構成にはすべての正しいインクルードが含まれていたため、プロジェクトは正しくビルドされましたが、インデクサーそれを拾っていませんでした。

アクティブなビルド構成を使用するようにインデクサーを設定して修正しました。 [ウィンドウ]-> [設定]-> [C/C++]-> [インデクサー]の[インデクサーのビルド構成]セクションで、[使用]を選択しました。アクティブなビルド構成」とそれをクリアしました。

5
Ryan Higgins

すべての答えは役に立ちますが、私の問題を解決する別のトリックがありました。コンパイラとは対照的にインデクサーはインクルードされたパスのサブディレクトリを処理しないであることがわかりました。そのため、ヘッダーファイルを含める場合はより具体的にする必要があります。


#include "subdirectory\include_2.h"

0
Nejc Deželak