web-dev-qa-db-ja.com

Eclipse CDTの無効なプロジェクトパス

メイクファイルを使用してビルドされたCプロジェクトがあり、Eclipseは常に「無効なプロジェクトパス:パスエントリの重複」について警告しますが、何をしたいのかわかりません。この警告を無効にして、私の人生を続けたいと思います。

私のアプリケーションはコンパイルして正常に実行されますが、これ以外の警告は1つもありません。良心的な開発者であるため、この問題を修正したいので、クリーンビルドだけがもたらすことができる温かいあいまいさがあります。

40
David Martin

これは、Eclipse 3.7.2およびCDT 8.0.2で機能しました。

  1. プロジェクトのプロパティを開きます| C/C++ビルド|発見オプション。
  2. [検出されたエントリを今すぐ消去]のボタンをクリックします。
  3. 再構築します。

これはCDT 8の新機能のようです。この「無効なプロジェクトパス:パスエントリの重複」問題が何年もありましたが、これは明らかに新しく提供されたソリューションです。

これを行う前に、C/C++ Generalの下にパスが重複していました。パスとシンボル|タブが含まれています。私はこれらを取り除くことができませんでした。組み込み値の表示がチェックされている場合にのみ表示されるため、どうやら生成されているようです。上記を実行した後、それらは重複のないセットに置き換えられました。唯一の違いは、同じ設定がアセンブリの下に表示されていることですGNU C、およびGNU C++。以前は異なるセットでした。アセンブリの設定は空でした。例えば。

これまでのところ、問題は再発していません。

30
Kenneth Evans

この問題は対処するのが本当に苦痛です。それはあまりうまくいきません。

これはEclipse 3.4.1/CDT 5.0.1に適用されます

私が言えることから、CDT内で「C/C++プロジェクト」を作成すると、インクルードパスの自動検出が試行されます。素晴らしいアイデアですが、実装は恐ろしいです。

ディレクトリを削除または名前を変更すると、古いディレクトリが残ります。プロジェクトの名前を変更すると、古いディレクトリが残ります。 Eclipseが古いディレクトリを見つけられない場合、警告が表示されます。

私の解決策は、自動検出を完全にオフにし、インクルードパスを手動で管理することです。 ctrl-クリック(定義/関数/ファイル/などへの自動ナビゲート)や#defineブロックのシェーディングなどのインクルードパスのこのリストが必要です。このリストからインデックスを作成します。

必要な作業は次のとおりです。プロジェクトエクスプローラーでプロジェクトを右クリックし、プロパティに移動します。 C/C++ Build-> Discovery Optionsに移動し、「パスとシンボルの自動検出」のチェックを外します

次に、C/C++ General-> Paths and Symbolsに移動します。Includesタブの下に、対応する自動検出されたincludeディレクトリを含むアセンブリ、CおよびC++言語が表示されます。 3つの言語すべてに移動し、すべてを削除します。メイクファイルを開き、インクルードを対応する言語に転写します。プロジェクトの名前を変更しても、インデクサーが破損します。 $ {project_name}およびその他のグローバルは機能していないようです。問題がある場合は、「ワークスペース」ボタンを使用して、含めるディレクトリを参照します。これは常に機能するように見えますが、手動で入力することはできません。 [適用]をクリックして、[OK]をクリックします。プロジェクトを右クリックして、index->​​ rebuild Eclipseを再起動します。

これは物事を永久に修正するはずです。 #defineまたは#ifdefブロックが原因で何かが不適切にシェーディングされている場合、それはファイルのリストが古いためです。また、#include行で「未解決の包含」を取得した場合、リストが古いこともわかります。

ダグ・シェーファー、できればGoogleがこれを索引付けして、あなたの名前を見つけ、このひどい実装を修正します。 =)

27
Jeff Lamb

このバグレポートは、問題を解決するのに役立ちました。インクルードパスをいくつか移動しましたが、古いパスを削除できませんでした。

私もこの問題を見ました、古いパスは決して削除されません。ファイルを手動で修正するには、$ {workspace} /。metadata/.plugins/org.Eclipse.cdt.make.coreにある$ {projectname} .scファイルを移動/削除する必要があります

https://bugs.Eclipse.org/bugs/show_bug.cgi?id=206372

12
EJ.

Eclipse LunaおよびCDT 8.5の使用

私はこの問題を修正しました

  1. プロジェクトのプロパティを開きます| C/C++全般|パスとシンボル
  2. [ソースの場所]タブを見て、ディレクトリの名前を変更しましたが、このリストでは更新されませんでした。
  3. 再構築
3
mark

ここで、パスを自動的に再検出する別の方法を見つけました。

  1. 「ワークスペース設定-> C/C++->ビルド->設定->ディスカバリー」を開きます
  2. 「CDTビルドインコンパイラ設定[シャード]」を検索
  3. 右側の[エントリを消去]および[リセット]ボタンをクリックします
  4. プロジェクトを再構築して完了

これが役立つことを願っています。

参照: http://qing.blog.sina.com.cn/1802712302/6b7334ee33004def.html

1
Ethan

Eclipse 4.4(これにはDiscoveryオプションはありません)に対する遅い回答があります。

プロジェクトのinfoPathファイルを削除します。 EclipseまたはADTプラグイン(どちらかはわかりません)が再作成し、正しいパスを設定します。

プロジェクトのinfoPathファイルは<Eclipse workspace>/.metadata/.plugins/com.Android.ide.Eclipse.ndk/<project>.pathInfoにあります。

IthinkEclipseまたはADTプラグインは、2つの場所から新しいパスを決定します:(1)Eclipse設定で設定されたNDKディレクトリ、および(2)のパスApplication.mk。これらのすべてのパスは、Eclipseで「組み込み」パスになります。

削除されたAndroid-ndk-r9インストールを指す組み込みC/C++パスを変更する方法? も参照してください。

0
jww

Eclipseがメイクファイルから把握できるシンボルを手動で定義したかどうかを確認する必要があります。手動で作成されたメイクファイルを持つプロジェクトがあり、C/C++ General-> Paths and Symbols-> Symbolsに手動で追加したシンボルを削除することで問題を解決しました。

0
Dick

.metadata guysを削除する必要はありません。C/C++ General-> Paths and Symbols-> Symbolsにあるすべてのパスを削除するだけです。クリックボタンを使用してそれらを置き換えますが、パスを手動で与えないでください

0
bouum

CDTのバグのようです。

本当に削除したい場合は、プロジェクトパスのスペースを削除してみてください。これは、エラーの検索結果で提案されました。それでもうまくいかない場合は、すべてのCDT設定がある場所である.cprojectファイルを開いて、重複したエントリがある実際のパスを確認してください。

0
aib