linux下使用vscode调试C++解决cannot open source file 找不到头文件的错误
使用 c_cpp_properties.json 配置包含文件/头文件
如果在 .vscode文件夹中没有 c_cpp_properties.json可以使用Ctrl+Shift+P输入并打开 C/C++: Edit Configurations (UI)
此时出现默认的 c_cpp_properties.json 文件。接下来在 "includePath" 中添加头文件的路径即可。
不知道头文件具体路径在哪里?没关系。比如 opencv2/highgui.cpp 文件,使用Ubuntu文件搜索功能直接找到其在系统中的位置 /usr/local/include/opencv4/ 添加即可。
当然首先你需要安装了opencv等依赖文件。
参考:
https://code.visualstudio.com/docs/cpp/config-linux
------------------------------------------------------分割线 -------------------------------------------------------------------------
注意!以上的路径添加方法只能告诉vscode的intellisense头文件的位置,以用于代码补全等。但在编译时依然会出现 找不到头文件的错误。我们需要在task.json的编译命令中添加路径。
预备知识:g++ 编译命令选项
-Ldir
制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然
编译器将只在标准库的目录找。这个dir就是目录的名称。
-Idir (大写i)
在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他
回先在你所制定的目录查找,然后再按常规的顺序去找.
对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺省的头文件目录查找
-g 生成调试信息。GNU 调试器可利用该信息。
-IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。 (大写i)
-LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。
https://blog.csdn.net/woshinia/article/details/11060797
-L -l (小写L)选项的区别 https://stackoverflow.com/questions/519342/what-is-the-difference-between-i-and-l-in-makefile
其他参考:
https://github.com/Microsoft/vscode-cpptools/issues/1889
https://stackoverflow.com/questions/61079599/includepath-in-c-cpp-properties-json-not-working-in-vscode-for-c
task.json 如图,此时再debug,不会再出现找不到NvInfer.h 或者 opencv2/opencv.hpp 的错误。