2008-11-21 123 views
37

我有一個使用makefile構建的C項目,Eclipse經常警告「無效的項目路徑:重複的路徑條目」,但我無法弄清楚它到底希望我做什麼。我想禁用此警告並繼續我的生活。Eclipse CDT無效的項目路徑

我的應用程序編譯和運行良好,沒有一個警告,除了這一個。作爲一名認真的開發人員,我熱衷於解決這個問題,所以我只有一個乾淨的構建可以帶來溫暖的模糊。

+1

如果您使用的是Eclipse 3.7/CDT 8,請查看Kenneth Evans的答案。我還沒有測試過,但它看起來不錯,如果它適合你,請留下評論。 – 2012-06-05 19:16:58

+0

經過測試,似乎正在工作。它應該是被接受的答案,恕我直言。 – ysap 2012-08-28 20:08:50

回答

30

這爲我工作與Eclipse 3.7.2和8.0.2 CDT:

  1. 打開項目屬性| C/C++構建|發現選項。
  2. 點擊按鈕清除發現的條目現在:。
  3. 重建。

它似乎是CDT 8中的一項新功能。多年來,我有過這種「無效項目路徑:重複路徑條目」的問題,這顯然是新提供的解決方案。

在執行此操作之前,在C/C++常規|路徑和符號|包含選項卡。我無法擺脫這些。它們僅在Show內置值被選中時出現,所以它們顯然是以某種方式生成的。完成上述操作後,它們被替換爲沒有重複的集合。唯一的區別是在Assembly,GNU C和GNU C++下出現了相同的設置。以前他們是不同的集合。例如,Assembly的那些是空的。

到目前爲止問題還沒有返回。

0

這似乎是CDT中的一個錯誤。

如果你真的想擺脫它,你應該嘗試擺脫項目路徑中的空間;這是在錯誤的搜索結果中建議的。如果這不起作用,您可以嘗試打開.cproject文件 - 這是所有CDT設置所在的位置,並檢查包含重複條目的實際路徑。

26

這個問題是一個真正的痛苦處理。它不能很好地工作。

這是適用於Eclipse的3.4.1/5.0.1 CDT

從我可以告訴,當你創建一個「C/C++項目」中的CDT,它會嘗試自動檢測您的include路徑。好主意,但實施是可怕的。

如果您刪除或重命名一個目錄,舊的目錄是剩餘的。如果您重命名該項目,舊的目錄是剩餘的。當Eclipse找不到那個舊目錄時,它會給你提示。

我的解決方案是完全關閉自動發現並手動管理我的包含路徑。你需要包含這些包含路徑的列表,例如ctrl-click(自動導航到定義/ functions/files/etc)以及遮蔽#define塊。它從這個列表中建立索引。

以下是您需要做的事情: 在項目瀏覽器中右鍵單擊您的項目並轉至屬性。 轉到C/C++編譯 - >查找選項 取消選中「自動路徑和符號的發現」

現在去C/C++常規 - >路徑和符號 你會看到下包括片組件,C和C++語言具有相應的自動發現包含目錄。 轉到所有3種語言並刪除所有內容。 打開你的makefile並將你的包含轉錄成相應的語言。 項目重命名仍然會導致索引器中斷。 $ {project_name}和其他全局變量似乎不起作用。如果遇到問題,請使用「工作區」按鈕瀏覽到您想要包含的目錄,因爲這似乎始終有效,但手動輸入不會。 點擊應用,然後確定。 右鍵點擊你的項目,進入index->​​ rebuild 重新啓動eclipse。

這應該永遠解決問題。任何時候,由於#define或#ifdef塊的原因,不正確的內容會被遮蓋,這是因爲該文件列表已過時。如果您在#include行中收到「未解決的內容」,您也會知道該列表已過時。

Doug Schaefer,希望谷歌可以索引這個,找到你的名字,然後你解決這個糟糕的實現。 =)

+1

就像更新一樣,您可以使用$ {ProjName}變量代替實際的項目名稱,並且它將通過項目重命名持續。 – 2009-08-03 18:07:28

12

我發現這個錯誤報告來幫助我的問題。我移動了一些包含路徑,無法擺脫舊路徑。

我也看到過這個問題,老路徑 永遠不會被刪除。要手動修復 文件,你需要移動/刪除 $ {}項目名稱下.SC $ {}工作區/。元/ .plugins/org.eclipse.cdt.make.core

找到的文件https://bugs.eclipse.org/bugs/show_bug.cgi?id=206372

0

您應該檢查您是否已經手動定義了日食可以從您的makefile中找出的符號。我有一個有手動編寫的makefile的項目,通過刪除手動添加到C/C++常規 - >路徑和符號 - >符號中的符號解決了問題。

0

沒有需要去除.metadata傢伙,只是刪除位於C中的所有路徑/ C++通用 - >路徑和符號 - >符號和替換它們使用點擊BUTTOM但沒有手動給路徑

1

在這裏,我剛發現另一種方式來重新檢測自動的路徑:

  1. 打開 「工作區設置 - > C/C++ - >構建 - >設置 - >發現」
  2. 查找「CDT內建編譯器設置[碎片]」
  3. 點擊「清除項目」和「重置」按鈕右側
  4. 重建項目,並完成

希望這會有所幫助。

參考: http://qing.blog.sina.com.cn/1802712302/6b7334ee33004def.html

0

這裏是爲Eclipse 4.4遲到的回答(這不具有發現選項)。

刪除項目的infoPath文件。Eclipse或ADT插件(不知道哪個)會重新創建它,並使用正確的路徑填充它。

您可以在<Eclipse workspace>/.metadata/.plugins/com.android.ide.eclipse.ndk/<project>.pathInfo找到該項目的infoPath文件。 Eclipse或ADT插件從兩個地方確定新路徑:(1)在Eclipse偏好設置下設置的NDK目錄;(2)在Application.mk中設置路徑。所有這些路徑都成爲Eclipse下的「內置」路徑。

另見How to change built-in C/C++ paths pointing to a deleted android-ndk-r9 installation?

2

使用Eclipse露娜和CDT 8.5

我通過

  1. 打開項目屬性固定的問題| C/C++常規|路徑和符號
  2. 看看源位置選項卡,我重命名了一個目錄,並且它在此列表中未更新。
  3. 重建