VSCode 包含路径 属性 无法正常工作
VSCode include path property not working properly
背景故事
我正在制作一个用于自学的小型游戏引擎项目/我正在使用 Vulkan Graphics API 以及我用 CMake 编译的 GLFW。在编译时一切正常,但是在 VSCode 中编写代码时,它会给我错误的错误提示 cannot open source file "GLFW/glfw3.h"C/C++(1696)
。即使我继续编译并将其包含到主文件中,它也会按预期工作。
我试过重新启动 VSCode、重新启动我的计算机、重建 CMake 并删除缓存,尝试使用 <>
和 ""
进行包含,以及使用 VSCode 将其再次包含在 CPP 属性文件中的建议。
重要的注意事项是,如果我将相同的代码包含到我的 main.cpp
文件中,它一切正常,但在我将代码分成单独的文件并尝试包含 GLFW 后问题开始发生.
文件结构:
+-> .vscode
| |
| +-> c_cpp_properties.json
| +-> settings.json
|
+-> bin
| |
| +-> Abyssal.exe
|
+-> build (CMake build files)
|
+-> src
| |
| +-> AbyssalWindow.h
| +-> main.cpp
|
+-> vendor (nothing inside this folder)
+-> CMakeLists.txt
{
"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>
你说你想使用 CMake 作为你的构建系统。我强烈建议您将所有构建设置保留在 CMake 中。
要转换您的 vscode 配置,请使用:
set(CMAKE_C_STANDARD 17)
set(CMAKE_CXX_STANDARD 17)
# declare global include directories used by all targets
# by using 'SYSTEM' many compilers will hide internal warnings
include_directories(SYSTEM
"C:/VulkanSDK/1.2.189.0/Include"
"C:/glfw-3.3.4/include"
)
从您的 vscode 配置中删除相应的设置,并将新创建的头文件添加到您对 add_executable
的调用中,以便 vscode 获得文件的正确包含目录。
而不是 include_directories 你可能更喜欢
target_include_directories(YOURTARGET ...)
更具体/“现代”。
背景故事
我正在制作一个用于自学的小型游戏引擎项目/我正在使用 Vulkan Graphics API 以及我用 CMake 编译的 GLFW。在编译时一切正常,但是在 VSCode 中编写代码时,它会给我错误的错误提示
cannot open source file "GLFW/glfw3.h"C/C++(1696)
。即使我继续编译并将其包含到主文件中,它也会按预期工作。我试过重新启动 VSCode、重新启动我的计算机、重建 CMake 并删除缓存,尝试使用
<>
和""
进行包含,以及使用 VSCode 将其再次包含在 CPP 属性文件中的建议。重要的注意事项是,如果我将相同的代码包含到我的
main.cpp
文件中,它一切正常,但在我将代码分成单独的文件并尝试包含 GLFW 后问题开始发生.
文件结构:
+-> .vscode
| |
| +-> c_cpp_properties.json
| +-> settings.json
|
+-> bin
| |
| +-> Abyssal.exe
|
+-> build (CMake build files)
|
+-> src
| |
| +-> AbyssalWindow.h
| +-> main.cpp
|
+-> vendor (nothing inside this folder)
+-> CMakeLists.txt
{
"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>
你说你想使用 CMake 作为你的构建系统。我强烈建议您将所有构建设置保留在 CMake 中。
要转换您的 vscode 配置,请使用:
set(CMAKE_C_STANDARD 17)
set(CMAKE_CXX_STANDARD 17)
# declare global include directories used by all targets
# by using 'SYSTEM' many compilers will hide internal warnings
include_directories(SYSTEM
"C:/VulkanSDK/1.2.189.0/Include"
"C:/glfw-3.3.4/include"
)
从您的 vscode 配置中删除相应的设置,并将新创建的头文件添加到您对 add_executable
的调用中,以便 vscode 获得文件的正确包含目录。
而不是 include_directories 你可能更喜欢
target_include_directories(YOURTARGET ...)
更具体/“现代”。