Makefile を使用してビルドされた C プロジェクトがあります。Eclipse は常に「無効なプロジェクト パス: パス エントリが重複しています」と警告しますが、一体何をしたいのかわかりません。この警告を無効にして、私の人生を続けたいと思います。
私のアプリケーションは、これを除いて単一の警告なしで、正常にコンパイルおよび実行されます。良心的な開発者として、私はこの問題を修正したいと考えています。そのため、クリーン ビルドだけがもたらす温かいあいまいさがあります。
Makefile を使用してビルドされた C プロジェクトがあります。Eclipse は常に「無効なプロジェクト パス: パス エントリが重複しています」と警告しますが、一体何をしたいのかわかりません。この警告を無効にして、私の人生を続けたいと思います。
私のアプリケーションは、これを除いて単一の警告なしで、正常にコンパイルおよび実行されます。良心的な開発者として、私はこの問題を修正したいと考えています。そのため、クリーン ビルドだけがもたらす温かいあいまいさがあります。
これは、Eclipse3.7.2およびCDT8.0.2で機能しました。
これはCDT8の新機能のようです。私はこの「無効なプロジェクトパス:パスエントリの重複」の問題を何年も抱えていましたが、これは明らかに新しく提供されたソリューションです。
これを行う前に、C /C++で重複したパスがありました。パスとシンボル| タブが含まれています。私はこれらを取り除くことができませんでした。[組み込みの値を表示する]がオンになっている場合にのみ表示されるため、何らかの方法で生成されているようです。上記を行った後、それらは重複のないセットに置き換えられました。唯一の違いは、同じ設定がAssembly、GNU C、およびGNUC++で表示されることです。以前は、それらは異なるセットでした。たとえば、アセンブリ用のものは空でした。
これまでのところ、問題は再発していません。
この問題は、対処するのが本当に苦痛です。うまくいきません。
これは、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 がこれをインデックスに登録して、あなたの名前を見つけて、このひどい実装を修正してください。=)
このバグレポートが私の問題に役立つことがわかりました。いくつかのインクルード パスを移動しましたが、古いパスを取り除くことができませんでした。
私もこの問題を見てきました。古いパスが削除されることはありません。ファイルを手動で修正するには、${workspace}/.metadata/.plugins/org.eclipse.cdt.make.core の下にある ${projectname}.sc ファイルを移動/削除する必要があります
Eclipse Luna と CDT 8.5 の使用
問題を修正しました
ここで、パスを自動的に再検出する別の方法を見つけました。
これが役立つことを願っています。
参照: http://qing.blog.sina.com.cn/1802712302/6b7334ee33004def.html
CDTのバグのようです。
本当にそれを取り除きたい場合は、プロジェクトパスのスペースを取り除いてみてください。これは、エラーの検索結果で示唆されました。それでも問題が解決しない場合は、.cprojectファイル(すべてのCDT設定がある場所)を開いて、エントリが重複している実際のパスを確認してください。
これは、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++ パスを変更する方法も参照してください。
Eclipse が makefile から認識できるシンボルを手動で定義したかどうかを確認する必要があります。手動で作成された makefile を持つプロジェクトがあり、C/C++ General -> Paths and Symbols -> Symbols に手動で追加したシンボルを削除することで問題が解決しました。
.metadata
みんな を削除する必要はありません。C/C++ General -> Paths and Symbols -> Symbolsにあるすべてのパスを削除し、クリックボタンを使用してそれらを置き換えますが、手動でパスを指定しないでください