2
0
0
Visual Studio+cmake+clang场景下intelliSense报E1027错误

文章摘要
|
问题描述
在使用Visual Studio结合CMake和Clang进行c++23开发时
一次异常断电以后IntelliSense突然报出E1027错误。导致智能提示失效
从一开时一切正常,一次重启后突然出现智能提示失效,所有文件第一行报E1027错误
错误时的CMakePresets.json
{
"version": 8,
"configurePresets": [
{
"name": "clang22",
"displayName": "Clang 22.1.3 (MSVC CLI) - amd64 for MSVC 18.8.12023.21 (Visual Studio Community 2026 Release)",
"description": "正在使用编译器: C = C:\\Program Files\\Microsoft Visual Studio\\18\\Community\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl.exe, CXX = C:\\Program Files\\Microsoft Visual Studio\\18\\Community\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl.exe",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_INSTALL_PREFIX": "${sourceDir}/build/install",
"CMAKE_C_COMPILER": "C:/Program Files/Microsoft Visual Studio/18/Community/VC/Tools/Llvm/x64/bin/clang-cl.exe",
"CMAKE_CXX_COMPILER": "C:/Program Files/Microsoft Visual Studio/18/Community/VC/Tools/Llvm/x64/bin/clang-cl.exe"
}
}
],
"buildPresets": [
{
"name": "clang22-debug",
"displayName": "Clang 22.1.3 (MSVC CLI) - amd64 for MSVC 18.8.12023.21 (Visual Studio Community 2026 Release) - Debug",
"configurePreset": "clang22",
"configuration": "Debug"
}
]
}
原因
根本原因好像是vs的clang解释器没有正确识别c++23标记?
未知
解决方法
将配置文件改为如下相对路径
{
"version": 8,
"configurePresets": [
{
"name": "clang22",
"displayName": "Clang 22.1.3 (MSVC CLI) - amd64 for MSVC 18.8.12023.21 (Visual Studio Community 2026 Release)",
"description": "正在使用编译器: C = C:\\Program Files\\Microsoft Visual Studio\\18\\Community\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl.exe, CXX = C:\\Program Files\\Microsoft Visual Studio\\18\\Community\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl.exe",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_CXX_COMPILER": "clang-cl"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"intelliSenseMode": "windows-clang-x64"
}
}
}
],
"buildPresets": [
{
"name": "clang22-debug",
"displayName": "Clang 22.1.3 (MSVC CLI) - amd64 for MSVC 18.8.12023.21 (Visual Studio Community 2026 Release) - Debug",
"configurePreset": "clang22",
"configuration": "Debug"
}
]
}
vs 项目->删除缓存并重新配置
确保在正确的项目点击运行
重启vs
让后就突然好了😱
这也太玄学了我不知道为啥突然就这样了,改成直接写clang-cl就好了
之前写了绝对路径就报错了,难道是vs的clang解释器没有正确识别c++23标记?还是说是vs的clang解释器有bug?
反正改成相对路径就好了
参考
https://developercommunity.visualstudio.com/t/Intellisense-for-ClangCL-does-not-work-f/11012681 关键
https://developercommunity.visualstudio.com/t/11125466
https://developercommunity.visualstudio.com/t/11077077