2016-03-23 27 views
5

我有一個克利翁C++項目,該項目具有以下結構:克利翁索引不能解決一些包括在項目目錄

project 
     ---->my_includes 
     | ----> my_own.hpp 
     ---->source 
      ----> my_app 
       ----> my_src.cpp 

my_src.cpp的第一行是

#include "my_includes/my_own.hpp" 

我用需要這種包含格式的外部構建系統。問題是如果我在包含頭文件中定義的源文件中使用函數,CLion會說「如果我試圖將鼠標懸停在包含文件上,找不到my_own.hpp」。

我試圖將include目錄標記爲包含Project Source或Headers,但是這並沒有解決它。有任何想法嗎?

+0

發佈您的CMakeLists.txt –

回答

10

您需要爲CLion創建一個CMakeLists.txt以獲得快樂。聲明所有源文件就足夠了,您不必將scons(或任何其他構建系統)轉換爲cmake。

你甚至不需要手工編寫CMakeLists.txt,你可以讓CLion去做:File | Import project ... |,然後指向包含你項目的目錄。

現在編輯生成的CMakeLists.txt並添加一個cmake命令來告訴CLion在哪裏找到包含(實際上是告訴編譯器,CLion會重用這些信息)。

由於源文件使用包括作爲#include "my_includes/my_own.hpp",你需要告訴CMake的含目錄my_includes的基本目錄:

include_directories(.) 

凡點是指同一目錄中包含CMakeLists.txt之一。

我測試了一個項目,再現了您的佈局,從my_src.cpp我可以導航到my_own.hpp

然後建立你仍然必須在控制檯中使用scons。也可以添加一個cmake命令,add_custom_target(),它會調用你的scons(或者你的make,或者其他),這樣你也可以從CLion導航到構建錯誤。

+0

謝謝,那有效! – CPayne

+0

我有類似的問題,include_directories是我需要的。我不得不添加一些不同的,但現在它工作得很好。 – njfife

0

這應該是一個基於CMake的項目,可以在CLion中正確打開。 如果您是CMake的新手,請查看CMake基礎教程:https://www.jetbrains.com/help/clion/2016.1/quick-cmake-tutorial.html

+1

因此,即使我不使用CMake作爲我的構建版(僅限SCONS),擁有CMake項目是CLion知道在哪裏查找某個文件的唯一方法? – CPayne

+0

是的,所以如果我們談論CLion如何使用CMake,我們只挑幾個樣本: 1.當代碼生成工作時,我們檢查編譯器中的特性可用性,例如override指令--CLion會建議您這樣做只有在編譯器與您的CMake中設置的所有選項都支持它的情況下才會打勾。這意味着至少C++ 11,編譯器版本當然應該支持它。 2.重命名重構,它檢查真正的上下文用法,而不是文本用法。 – nastasiak2512

+0

爲了做到這一點,CLion需要知道很多關於您的代碼的知識。它取決於很多東西:項目的源文件,包含頭文件和頭文件搜索路徑,編譯器標記,使用的工具鏈和平臺,編譯器預定義的宏等等。 因此,CLion會分析您的CMake項目模型,將所有這些信息從那裏獲取,然後將其用於解析,解析和其他功能。 – nastasiak2512