Libclang 不要遵循包含语句

Libclang don't follow include statement

本文关键字:包含 语句 Libclang      更新时间:2023-10-16

我试图使用Libclang对Opencv库进行编程分析,但当我试图从Opencv opencv.hpp导入主标头时,Libclang不会遵循路径。

以前,它读所有的东西都很漂亮,但后来我觉得它遵循了$PATH的标题,我希望它遵循这些具体的标题。

opencv.hpp是一个包含许多#include语句的文件,如:

#include "core/core_c.h"
#include "core/core.hpp"
#include "flann/miniflann.hpp"
// ... and so on

但是,当我尝试用libclangclang ./opencv.hpp打开它时,它不会跟随:

clang ./Header_Example/opencv.hpp
./Header_Example/opencv.hpp:46:10: fatal error: 'core/core_c.h' file not found
#include "core/core_c.h"
         ^
1 error generated.

但我确信它在正确的目录上(有点像我的tree输出):

── Header_Example
│   ├── opencv.hpp
│   ├── opencv2
│   │   ├── # more directories
│   │   ├── core
│   │   │   ├── affine.hpp
│   │   │   ├── core.hpp
│   │   │   ├── core_c.h
│   │   │   ├── types_c.h
│   │   │   ├── version.hpp
│   │   │   └── wimage.hpp

也许我没有使用正确的clang参数?

一点上下文:我想分析Opencv类型、类和函数,这些信息出现在标题中,所以我认为我不需要完整的库来阅读代码。当我试图使用完整的图书馆时,我发现自己遇到了麻烦。我需要使用库的iOS编译(?)版本(?),因此我将编译版本的头文件复制/粘贴到此工作目录中(对不起?:)

编辑1:我的目录有这个opencv2/可能看起来很奇怪,但如果我从里面删除标题,clang会抱怨"为什么它们不在那里:fatal error: 'opencv2/core/types_c.h' file not found

"

我只需要在添加-I./opencv2之前添加-I.,因为我有一个文件,与opencv.hpp位于同一目录。天哪,我错过了这个,真是愚蠢。