KDevelop没有看到C ++头文件

时间:2017-03-09 15:52:03

标签: c++ kdevelop

我有一个由几个共享库构建的C ++项目。每个库源代码都放在其子目录下。主CMakeList文件包含add_subdirectory(<dirname>)指令列表。每个子目录中的CMakeList文件包含如下定义:

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上使用英特尔C / C ++编译器,在AppImage上运行KDevelop 5.0.4。

4 个答案:

答案 0 :(得分:1)

我发现并解决了一个类似的问题 - 头文件未见,代码/类浏览器失败。事实证明我的代码中存在错误。为了其他可能编写类似错误并到达此页面的人的利益,这就是我做错了:

我在文件' myClass.hpp '中只有一个标题类,而空实现' myClass.cpp '。我的 CmakeLists.txt 引用了该实现,但我的实现并未包含 #include“myClass.hpp”。 Kdevelop-5.1.0中的效果是头文件没有被解析为程序的一部分 - 因此它的包含没有被读取,并且大部分代码都没有通过语义分析。

答案 1 :(得分:0)

尝试添加

include_directories(${SOURCE_FILES})

答案 2 :(得分:0)

看来我遇到了同样的问题。 症状: -Kdevelop 5.1.2找不到一些#includes;它们在源文件中带有下划线。 -建立项目没有问题 原因: -符号链接和原始* .h文件都在指定的路径中    CMakeLists.txt中的include_directories()。删除符号链接可解决此问题。

Kdevelop可能会混淆多个具有相同名称的* .h文件。 也许将来的某些Kdevelop版本将能够识别出它仅在处理一个目标。

答案 3 :(得分:0)

在KDevelop 5上,这解决了我的问题:

  • 转到菜单“项目”->“打开配置...”
  • 在现在打开的窗口中,转到左侧的“ Cppcheck”,然后转到右侧的“ Include Directories”
  • 选中“使用'系统'包含目录”选项:

Here is screenshot of that options window