2017-03-09 40 views
2

我有一個由多個共享庫構建的C++項目。每個庫源代碼都放在其目錄的子樹下。主CMakeList文件包含一個add_subdirectory(<dirname>)指令列表。在每一個子目錄CMakeList文件包含的定義如下所示:KDevelop沒有看到C++頭文件

set (SOURCE_FILES 
    util/src/Connector.cpp 
    pub/util/Connector.h 
) 

add_library(channels SHARED $(SOURCE_FILES)) 
SET_TARGET_PROPERTIES(channels PROPERTIES LINKER_LANGUAGE CXX) 

其中channels是子目錄名。

雖然包含文件的搜索路徑設置正確並且編譯工作正常,但KDevelop沒有看到Connector.h頭文件,因此它的解析和代碼/類瀏覽器不起作用。

我知道每個目錄中的.kdev_include_paths文件都可能解決問題。不幸的是,由於在我們的開發環境中存在一些額外的限制,這種方法可能無法使用

有沒有其他辦法可以解決這個問題?

我在RHEL 7.1上使用Intel C/C++編譯器,並使用從AppImage運行的KDevelop 5.0.4。

回答

0

嘗試增加

include_directories(${SOURCE_FILES}) 
+0

它沒有幫助 – GMichael

+0

編譯器是否看到頭文件? – OutOfBound

+0

是的,它看到他們 – GMichael

1

我發現並解決其中提出同樣一個問題 - 頭文件沒有見過和代碼/類瀏覽器失敗。原因原來是我的代碼中的錯誤。對於其他的誰可以寫一個類似的錯誤,並在這個頁面時的好處,這裏是我做錯了什麼:

我的文件「myClass.hpp」和空的實現「有一個頭只類myClass.cpp'。我的CmakeLists.txt引用了實現,但是我的實現並沒有包含#include「myClass.hpp」。 Kdevelop-5.1.0中的效果是頭文件沒有被解析爲程序的一部分 - 因此它的包含沒有被讀取,並且大部分代碼沒有通過語義分析。