VSCode include path配置异常,GLFW头文件报无法打开的虚假错误
问题背景
- 正在开发用于自学的小型游戏引擎项目,使用Vulkan Graphics API搭配GLFW,通过CMake完成编译。编译阶段一切正常,但在VSCode内编写代码时会收到虚假报错:
cannot open source file "GLFW/glfw3.h"C/C++(1696),但实际正常编译引入后功能符合预期。 - 已尝试重启VSCode、重启电脑、重新构建CMake并删除缓存、分别使用
<>和""格式引入头文件、按照VSCode提示在CPP Properties文件中重新添加引入路径,均未解决问题。 - 特殊说明:相同的引入代码放在
main.cpp文件中运行完全正常,仅当我将代码拆分到独立文件后尝试引入GLFW时,才会触发该问题。
文件结构
+-> .vscode | | | +-> c_cpp_properties.json | +-> settings.json | +-> bin | | | +-> Abyssal.exe | +-> build (CMake构建文件) | +-> src | | | +-> AbyssalWindow.h | +-> main.cpp | +-> vendor (文件夹为空) +-> CMakeLists.txt
相关配置
c_cpp_properties.json配置
{ "env": { "myDefaultIncludePath": [ "${workspaceFolder}", "${workspaceFolder}/src" ] }, "configurations": [ { "name": "Windows", "intelliSenseMode": "${default}", "includePath": [ "${myDefaultIncludePath}", "C:/VulkanSDK/1.2.189.0/Include", "C:/glfw-3.3.4/include" ], "cStandard": "c17", "cppStandard": "c++17", "configurationProvider": "ms-vscode.cmake-tools" } ], "version": 4 }
头文件引入代码
#define GLFW_INCLUDE_VULKAN #include <GLFW/glfw3.h>
报错截图
- 错误代码:

- main文件正常运行:

- C++属性配置文件:

解决方案
该问题由VSCode C/C++扩展的IntelliSense路径读取规则导致,可按以下优先级解决:
- 修复CMake配置(推荐)
你配置了"configurationProvider": "ms-vscode.cmake-tools",此时IntelliSense会优先从CMake配置中读取头文件路径,忽略你手动在c_cpp_properties.json中填写的includePath。
你当前的CMakeLists.txt仅给main.cpp所属的编译目标配置了Vulkan、GLFW的头文件路径,拆分后的头文件单独被IntelliSense扫描时,无法读取到仅对main.cpp生效的包含路径。在CMakeLists.txt中添加全局包含目录即可:
include_directories("C:/VulkanSDK/1.2.189.0/Include" "C:/glfw-3.3.4/include")
更规范的写法是给你拆分代码对应的编译目标添加公共包含目录:
target_include_directories(你的编译目标名 PUBLIC ${Vulkan_INCLUDE_DIRS} ${GLFW_INCLUDE_DIRS})
修改后重新加载CMake项目,IntelliSense会自动同步路径。
2. 关闭CMake配置源
如果不需要用CMake自动同步IntelliSense配置,直接删除c_cpp_properties.json中的"configurationProvider": "ms-vscode.cmake-tools"配置项,C/C++扩展就会直接读取你手动填写的includePath,即可识别到GLFW和Vulkan的头文件。
3. 排查工作区路径
确认你VSCode打开的工作区根目录是项目根目录(即包含顶层CMakeLists.txt的文件夹),否则${workspaceFolder}变量会指向错误路径,导致配置失效。
内容的提问来源于stack exchange,提问作者Jacob Chafin
相关产品推荐
相关产品推荐

