问题描述
我遇到的问题,之前也在CSDN上提问过,结果全是ChatGPT回答,其实我要是能靠ChatGPT解决问题我还在这找人解决干嘛,大伙说对吧。。。
这是问题描述:
在编译第三方库pcl和opencv的代码时,已经可以正常编译了,但是就是没有这两个库的代码提示,c++的代码提示倒是有,一涉及到pcl和opencv的代码提示就没有。
大致是这样:
问题解决目标
也就是要有代码提示吗
大致就是下图所示
我的解决方案
解决方案倒是很简单,删除你c_cpp_properties.json下includePATH中的
"/usr/include/x86_64-linux-gnu/sys"
就行了。
我的VScode同时配置opencv与pcl的方案
大家参考参考就行了,写这么细化的操作只是为了方便新手,毕竟入门没人带是痛苦的,别问我这么知道的。
在VScode中,先随便打开一个c++文件,Ctrl+Shift+p打开搜索框,搜索Tasks:Configure Default Build Task,选择下图所示的g++生成活动文件:
在args的后面接着添加
"-I", "${workspaceFolder}/include",
"-I", "$/usr/local/include/opencv4", //记得换成自己的路径
"-I", "$/usr/local/include/opencv4/opencv2", //记得换成自己的路径
"-I","/usr/include/pcl-1.14",//记得换成自己的路径
"-I","/usr/include/eigen3",//记得换成自己的路径
"-I","/usr/local/include/vtk-9.3",//记得换成自己的路径
"-I","/usr/include/libqhull",
"-I","/usr/include/flann",
"-I","/usr/include/boost",
"-I","/usr/include/x86_64-linux-gnu",
"-L", "$/usr/local/lib",
"-l", "opencv_core",
"-l", "opencv_imgproc",
"-l", "opencv_imgcodecs",
"-l", "opencv_video",
"-l", "opencv_ml",
"-l", "opencv_highgui",
"-l", "opencv_objdetect",
"-l", "opencv_flann",
"-l", "opencv_imgcodecs",
"-l", "opencv_photo",
"-l", "opencv_videoio",
"-l","pcl_io",
"-l","pcl_visualization",
"-l","pcl_common",
"-l","vtkFiltersCore-9.3",
"-l","vtksys-9.3",
"-l","vtkCommonCore-9.3",
"-l","vtkRenderingCore-9.3",
"-l","vtkGeovisCore-9.3",
"-l","boost_system",
然后再Ctrl+Shift+p打开搜索框,搜索C/C++:Edit Configurations(JSON),在includepath后面接着添加如下代码,不过别忘了在"${workspaceFolder}/**"后面加个逗号:
"/usr/include/**",
"/usr/include/pcl-1.14",
"/usr/local/include/vtk-9.3",
"/usr/include/libqhull",
"/usr/include/flann",
"/usr/include/boost",
"/usr/include/eigen3",
"/usr/include/eigen3/Eigen/",
"/usr/local/include/opencv4"
这只是方便大家有代码提示,具体编译我还是喜欢用CMake,确实好用,CMakeLists.txt文件也可以参考我的
cmake_minimum_required(VERSION 3.15)
project(xingming)#自己起个名,随便起啥,比如叫xingming
find_package(OpenCV REQUIRED)
find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(xingming1 test.cpp)#前者是自己起名字,比如xingming1 后者则是你的程序名称,比如test.cpp
target_link_libraries (xingming1 PRIVATE ${PCL_LIBRARIES})#与上面保持一致就行
target_link_libraries (xingming1 PRIVATE ${OpenCV_LIBS})#与上面保持一致就行
当然最好自己去学一下CMake,挺简单的。
本篇文章只是感觉这个问题挺奇怪的,就写出来了,我个人只是小白,如有不当之处,请各位批评指正。