2017-03-09 41 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中的效果是头文件没有被解析为程序的一部分 - 因此它的包含没有被读取,并且大部分代码没有通过语义分析。