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 的错误。

原文地址:https://www.cnblogs.com/mrlonely2018/p/14885211.html