2012-08-30 115 views
11

我有一個工作區與多個項目,這都沒有問題編譯。然而,由於未解決的問題,一些項目在編輯器中給出了很多關於未解決符號的警告。大多數是來自工作區中的其他項目或第三方庫的標題。Eclipse CDT索引器 - 如何解決未解決包括

谷歌搜索表明這是一個索引器的問題,但我還沒有找到任何連貫的解釋如何解決它 - 我假設我需要將這些庫的路徑添加到索引器的路徑,但我不能看到任何選項(我正在使用Juno)。

任何人都可以請向我解釋如何配置CDT的索引器?

我也得到了未解決的兩個項目中的STL頭包括警告。有些STL頭文件已解析,但其他文件頭文件卻沒有,而且這兩個項目之間的列表看起來並不相同(發現像vector和iostream之類的東西,但不是sstream或string,另一個也沒有找到iostream) 。

可能相關:這些是C++項目,但所有文件擴展名都是.c。我將GCC C編譯器命令更改爲'g ++'來編譯它們,但我想我還需要對索引器設置進行一些處理以應對它?

回答

6

好的,所以我現在已經解決了這個問題。

  1. 未解決的包含來自工作區和第三方庫中的其他項目的問題已通過添加其他項目作爲參考解決。我猜編譯器知道在哪裏看,因爲我已經將位置添加到包含列表中,但索引器沒有(可能是由於eclipse只處理標頭一次?)

  2. 未解決的包含來自STL通過更改我所有的.c文件實際上是C++到.cpp。只是將編譯命令更改爲「g ++」顯然不足以告訴索引器將項目視爲C++。

在1)的情況下,我需要先清除/重建被引用的項目的索引,以刪除未解決的包含錯誤。

+1

(注意:使用Eclipse CDT的QNX Momentics風格。)我們有一個完整的「接口」類目錄結構,它我們沒有放置任何項目。基於這個答案,我在「界面」文件夾級別創建了一個項目,其中包括所有子文件夾的標題和源代碼。將這個文件夾的項目添加爲項目引用修復了未解決的包含,突然我的錯誤和警告都提供了鏈接! (我告訴這個項目停止構建第一個錯誤,這可以避免冗長的編譯時間。) – sage

5

右鍵點擊您的項目在工作區中,選擇Properties - >C++ General - >Paths and Symbols,然後加入包含和特定的編譯器的符號,加庫,你需要在可用的選項卡其他的東西。之後,打到Apply - 它應該開始重新索引,並且你的問題應該消失。

+2

感謝您的迴應亞歷。不幸的是,這似乎並沒有幫助我 - 在屬性> C++常規>路徑和符號下的列表似乎是在C/C++構建>設置>工具設置>包括',我有已經填充了編譯項目所需的include目錄的路徑。然而,索引器仍然在這些目錄中發出「未解析的包含」標題警告。 – jam

+0

您可以嘗試以下操作:右鍵單擊您的項目,「屬性」 - >「索引」並嘗試其中的選項:「重建」,「使用修改的文件更新」,「更新所有文件」,「搜索未解析的包含」 。通常選項2和3解決了我的問題。 –

+1

我已經重建了我的索引,但謝謝你的建議。我相信我可能已經破解了這個 - 我注意到,在一個項目中未解決的內容實際上是以其他項目之一的名義列出的。所以,我添加了該項目作爲參考,重建了索引,現在它說0未解決包含。將看看如果此修復程序適用於我的所有項目,並將其添加爲答案如果是這樣:) – jam

3

我有一個類似的問題,我的項目將建立,但顯示未解決包括在Eclipse開普勒。

在我的情況下,我採用了現有的ARM項目並創建了一個使用不同工具鏈的自定義構建配置。新的構建配置包含了所有正確的內容,因此該項目的構建正確,但索引器沒有選擇它。

我通過將索引器設置爲使用活動構建配置來修復它。在窗口 - >首選項 - > C/C++ - >索引器中,在標記爲「爲索引器構建配置」的部分下,我選擇了「使用活動構建配置」,並將其清除。

0

所有的答案都很有幫助,但還有另一個技巧可以解決我的問題。 我發現,與編譯器不同,索引器不處理包含路徑的子目錄。因此,您需要在包含頭文件時更加具體。


#包括 「子目錄\ include_2.h」