2016-03-03 120 views
1

在將一個C++ Makefile項目導入Eclipse後,我的項目依賴於位於/usr/include/gazebo-2.2/gazebo中的一些庫。Eclipse無法在子目錄中找到包含文件

這些包括在線#include < gazebo/xx/xx.hh>。 CMake沒有找到文件的問題,不幸的是,Eclipse不會...

在我的包含文件夾中,文件夾/usr/include/被設置爲包含路徑。但是它找不到包含文件。

eclipse是否可以發現文件沒有添加包含目錄的完整路徑?

回答

1

eclipse是否可以在不添加包含目錄的完整路徑的情況下發現文件?

不,除非有問題的包含路徑是編譯器的默認路徑之一,包括 路徑,這不是你的情況。

如果您希望編譯器查找由例如引用的頭文件,

<gazebo/xx/xx.hh> 

時所需要的文件是:

/usr/include/gazebo-2.2/gazebo/xx/xx.h 

那麼編譯器必須給予包括路徑:

/usr/include/gazebo-2.2 

應該在你構建日誌出現在編譯器COMMANDLINES爲:

-I/usr/include/gazebo-2.2 

我還要注意您的例子其實是:

#include < gazebo/xx/xx.hh> 

不是:

#include <gazebo/xx/xx.hh> 

在你的榜樣,領先的空間將被視爲 文件名的一部分,頭也不會被發現。

0

eclipse是否可以在不添加包含目錄的完整路徑的情況下發現文件?

由於您使用的是Makefile項目,因此您的makefile可能會指定相關的包含路徑。 Eclipse可以使用它的Build Output Parser來選擇它。設置此的一般方法是:

  1. 確保您的makefile文件可以產生包括完整的編譯器命令調用輸出(例如gcc -I /usr/include/gazebo-2.2 ... - 因爲這是構建輸出解析器需要看到的),或者可以配置以產生該產出。
  2. 確保Eclipse配置爲在項目屬性 - > C/C++構建中正確調用makefile(根據調用目錄和目標名稱)。
  3. 確保在Project Properties - > C/C++ General - > Preprocessor Include Paths,Macros等 - > Providers選項卡中啓用了構建輸出解析器。如有必要,請適當調整「編譯器命令模式」。
  4. 在Eclipse中執行構建。假設你的構建成功(或者至少對於構建輸出來說包含每個源文件的編譯器命令的成功),構建輸出解析器應該接收信息,例如命令行中定義的包含路徑和宏。在Project Explorer中,以這種方式拾取設置的源文件將在圖標上用一個小扳手裝飾進行註釋。
  5. 在這一點上,你的包括應該解決。您可能需要重新構建索引以使Eclipse處理新解析文件的內容。

爲了完整起見,自從您提到CMake以來,我會提到還有一些插件會根據CMakeLists.txt直接配置項目的include路徑。 (我不能推薦一個具體的,因爲我自己不使用CMake,但在Eclipse Marketplace中搜索「CMake」應該給你幾個選項。)

相關問題