我试图使用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
但是,当我尝试用libclang
或clang ./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
位于同一目录。天哪,我错过了这个,真是愚蠢。