Ubuntu下VSCode中OpenCV C++ IntelliSense/自动补全失效求助
源码安装OpenCV后VSCode C++ IntelliSense无法正常工作的解决方法
我在Ubuntu 18.04.6 LTS机器上从源码安装了OpenCV,安装路径为/usr/local/<blah_blah>,目录结构如下:
milan@my_machine:/usr/local/<blah_blah>$ tree -L 4 . ├── bin │ ├── opencv_annotation │ └── ... ├── include │ └── opencv4 │ └── opencv2 │ ├── ... │ ├── core │ ├── core.hpp │ ├── ... │ └── ... ├── lib │ ├── cmake │ │ └── opencv4 │ │ ├── OpenCVConfig.cmake │ │ └── ... │ ├── ... │ ├── libopencv_core.so -> libopencv_core.so.4.2 │ ├── libopencv_core.so.4.2 -> libopencv_core.so.4.2.0 │ ├── libopencv_core.so.4.2.0 │ ├── ... │ ├── ... │ ├── opencv4 │ │ └── 3rdparty │ │ ├── ... │ │ └── ... │ ├── python2.7 │ │ └── dist-packages │ │ └── cv2 │ └── python3.6 │ └── dist-packages │ └── cv2 └── share ├── licenses │ └── opencv4 │ ├── ... │ └── ... └── opencv4 ├── ... │ └── ... ├── ... └── ...
之前解决过PCL的类似问题,于是尝试了如下配置:
- 在
settings.json中添加:
"C_Cpp.default.includePath": [ "/usr/local/<blah_blah>/include/opencv4/opencv2/**", "/usr/local/<blah_blah>/include/opencv4/opencv2/core", "/usr/local/<blah_blah>/include/opencv4/opencv2/core/*", "/usr/local/<blah_blah>/include/opencv4/opencv2/core/**" ],
- 在
c_cpp_properties.json中配置:
"includePath": [ "${workspaceFolder}/**", "${default}" ],
但配置后问题仍未解决,OpenCV C++的IntelliSense/自动补全依然无法正常工作。编译和运行均正常,示例代码如下:
说明1:
- CMake中已将
/usr/local/<blah_blah>/include/opencv4添加到include_directories中。 - 项目编译、运行无异常。
说明2:以下问题与当前场景无关,均针对OpenCV Python:
- VSCode autocomplete not working for OpenCV installed from source
- cv2 (opencv-python) intellisense not working
解决方案
1. 修正includePath配置
当前includePath配置过于冗余且未命中正确的根路径。在c_cpp_properties.json中直接添加OpenCV的根include目录即可:
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/usr/local/<blah_blah>/include/opencv4" ], "defines": [], "compilerPath": "/usr/bin/gcc", "cStandard": "gnu17", "cppStandard": "gnu++17", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
代码中引用头文件为#include <opencv2/core.hpp>,根路径指向opencv4目录后,IntelliSense才能正确找到opencv2子目录下的所有头文件。
2. 使用CMake Tools插件自动同步配置
VSCode的CMake Tools插件可自动读取CMakeLists.txt中的配置并同步到IntelliSense:
- 安装CMake Tools插件
- 打开项目时选择对应的CMake配置(Debug/Release)
- 插件会自动解析
include_directories中的路径,无需手动维护c_cpp_properties.json
3. 手动指定OpenCV的CMake配置路径
若CMake Tools未自动识别,可在c_cpp_properties.json中添加browse.path配置:
{ "configurations": [ { // ... 其他配置项 "browse": { "path": [ "${workspaceFolder}/**", "/usr/local/<blah_blah>/include/opencv4", "/usr/local/<blah_blah>/lib/cmake/opencv4" ], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } } ] }
4. 重启IntelliSense服务
配置修改后,按Ctrl+Shift+P(Linux)打开命令面板,选择C/C++: Restart IntelliSense,确保新配置生效。
内容的提问来源于stack exchange,提问作者Milan
相关产品推荐
相关产品推荐

