44

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

私のアプリケーションは、これを除いて単一の警告なしで、正常にコンパイルおよび実行されます。良心的な開発者として、私はこの問題を修正したいと考えています。そのため、クリーン ビルドだけがもたらす温かいあいまいさがあります。

4

9 に答える 9

31

これは、Eclipse3.7.2およびCDT8.0.2で機能しました。

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

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

これを行う前に、C /C++で重複したパスがありました。パスとシンボル| タブが含まれています。私はこれらを取り除くことができませんでした。[組み込みの値を表示する]がオンになっている場合にのみ表示されるため、何らかの方法で生成されているようです。上記を行った後、それらは重複のないセットに置き換えられました。唯一の違いは、同じ設定がAssembly、GNU C、およびGNUC++で表示されることです。以前は、それらは異なるセットでした。たとえば、アセンブリ用のものは空でした。

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

于 2012-06-01T18:36:27.140 に答える
27

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

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

私が知る限り、CDT 内で「C/C++ プロジェクト」を作成すると、インクルード パスを自動検出しようとします。素晴らしいアイデアですが、実装は恐ろしいものです。

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

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

プロジェクト エクスプローラーでプロジェクトを右クリックし、プロパティに移動します。[C/C++ ビルド] -> [検出オプション] に移動し、[パスとシンボルの検出を自動化する] のチェックを外します

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

これで永久に問題が解決するはずです。#define または #ifdef ブロックが原因で不適切に陰影が付けられている場合は、そのファイルのリストが古くなっているためです。#include 行に「未解決の包含」がある場合、リストが古くなっていることもわかります。

Doug Schaefer、願わくば Google がこれをインデックスに登録して、あなたの名前を見つけて、このひどい実装を修正してください。=)

于 2009-01-05T19:23:24.647 に答える
13

このバグレポートが私の問題に役立つことがわかりました。いくつかのインクルード パスを移動しましたが、古いパスを取り除くことができませんでした。

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

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

于 2009-04-23T19:28:38.890 に答える
6

Eclipse Luna と CDT 8.5 の使用

問題を修正しました

  1. プロジェクトのプロパティを開く | C/C++ 一般 | パスとシンボル
  2. [ソースの場所] タブを見てください。ディレクトリの名前を変更しましたが、このリストでは更新されていません。
  3. 再構築
于 2015-04-10T04:27:48.620 に答える
1

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

  1. 「ワークスペース設定 -> C/C++ -> ビルド -> 設定 -> 検出」を開きます
  2. 「CDT組み込みコンパイラ設定[シャード]」を探します
  3. 右側の「Clear Entries」と「Reset」ボタンをクリックします
  4. プロジェクトを再構築して完了

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

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

于 2013-10-05T02:35:59.257 に答える
0

CDTのバグのようです。

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

于 2008-11-21T00:42:52.027 に答える
0

これは、Eclipse 4.4 (検出オプションがない) の最新の回答です。

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

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

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

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

于 2015-01-14T06:12:12.257 に答える
0

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

于 2009-09-06T17:15:08.303 に答える
0

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

于 2012-08-23T09:50:08.880 に答える