Ubuntu 20.04下VSCode配置includePath后仍无法找到myfunc.h头文件
问题描述
已在VSCode的c_cpp_properties.json中配置了include路径,但编译时仍找不到myfunc.h头文件。
环境信息
- 操作系统:Ubuntu 20.04
- VSCode版本:1.85.2
配置文件信息
c_cpp_properties.json内容如下:
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "${workspaceFolder}/include/**", "${workspaceFolder}/src/**" ], "defines": [], "compilerPath": "/usr/bin/g++", "cStandard": "c17", "cppStandard": "gnu++14", "intelliSenseMode": "linux-gcc-x64", "configurationProvider": "ms-vscode.cmake-tools", "browse": { "path": [ "${workspaceFolder}/include" ] } } ], "version": 4 }
项目目录结构
. ├── include │ └── myfunc.h ├── main.cpp └── src └── myfunc.cpp
编译错误信息
* 终端进程启动失败(退出代码:-1)。 * 终端将被任务复用,按任意键关闭。 * 正在执行任务:C/C++: g++ 生成活动文件 开始生成... /usr/bin/g++ -fdiagnostics-color=always -g /home/wangc/Documents/work/hello_world/main.cpp -o /home/wangc/Documents/work/hello_world/main /home/wangc/Documents/work/hello_world/main.cpp:12:10: 致命错误:myfunc.h:没有那个文件或目录 12 | #include "myfunc.h" | ^~~~~~~~~~ 编译终止。 生成已完成,出现错误。
解决方案
c_cpp_properties.json仅用于VSCode的代码提示(IntelliSense),不控制实际编译流程。g++编译时找不到头文件,是因为编译命令未指定头文件搜索路径。
方法1:修改tasks.json添加编译参数
- 按
Ctrl+Shift+B,选择“创建tasks.json文件”,选“C/C++: g++ 生成活动文件”模板。 - 在tasks.json的
args数组中加入-I${workspaceFolder}/include,指定头文件目录。修改后的示例:
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: g++ 生成活动文件", "command": "/usr/bin/g++", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-I${workspaceFolder}/include", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "编译器: /usr/bin/g++" } ] }
方法2:手动执行编译命令
在终端直接运行带-I参数的编译命令:
g++ -g main.cpp -I./include -o main
如果需要链接src/myfunc.cpp的代码,避免后续出现未定义引用错误,需把该文件加入编译:
g++ -g main.cpp src/myfunc.cpp -I./include -o main
对应tasks.json的args也要添加${workspaceFolder}/src/myfunc.cpp。
内容的提问来源于stack exchange,提问作者Cheng Wang
相关产品推荐
相关产品推荐

