作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法让 clangd 为来自 SFML 的任何外部 header 提供自动完成功能。
我已经尝试在 Ubuntu VM 上执行相同的操作并且一切正常。 compile_commands.json 也已移至项目根目录。
项目树现在看起来像这样:
.clangd
--index
----main.cpp.1B607D111B8CF0BE.idx
build
--CMakeFiles etc
src
--main.cpp
CMakeLists.txt
compile_commands.json
CMakeLists.txt 包含以下内容:
cmake_minimum_required(VERSION 3.10)
project(test)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(src_files
src/main.cpp)
set(SFML_DIR "D:/Libs/SFML/SFML-2.5.1-windows-vc15-64-bit/SFML-2.5.1/lib/cmake/SFML/")
find_package(SFML COMPONENTS graphics)
add_executable(test ${src_files})
target_link_libraries(test PRIVATE sfml-graphics)
target_include_directories(test PRIVATE D:/Libs/SFML/SFML-2.5.1-windows-vc15-64-bit/SFML-2.5.1/include)
compile_commands.json 包含以下内容:
[
{
"directory": "C:/Users/Joerg/projects/test/build",
"command": "C:\\PROGRA~1\\LLVM\\bin\\CLANG_~1.EXE @CMakeFiles/test.dir/includes_CXX.rsp -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd -std=gnu++17 -o CMakeFiles\\test.dir\\src\\main.cpp.obj -c C:\\Users\\Joerg\\projects\\test\\src\\main.cpp",
"file": "C:/Users/Joerg/projects/test/src/main.cpp"
}
]
我也尝试过使用 MinGW Clang,其中相应的 compile_commands.json 如下所示:
[
{
"directory": "C:/Users/Joerg/projects/test/build nin",
"command": "C:\\msys64\\mingw64\\bin\\clang++.exe -std=gnu++17 -o CMakeFiles\\test.dir\\src\\main.cpp.obj -c C:\\Users\\Joerg\\projects\\test\\src\\main.cpp",
"file": "C:/Users/Joerg/projects/test/src/main.cpp"
}
]
我希望 clangd 为 SFML 命名空间 (sf::) 提供自动完成功能,就像它为 std 命名空间 (std::) 所做的那样。目前,当我写 #include <SFML/Graphics.hpp>
时,它找不到标题。 .它给了我这个错误信息: 'SFML/Graphics.hpp' 文件没有找到 clang(pp_file_not_found)
最佳答案
clangd 使用 compile_commands.json 获取 include 属性,但 clang 10.0 以下版本无法识别 .rsp 文件,例如 @CMakeFiles/test.dir/includes_CXX.rsp
。这就是为什么您的 clangd 找不到某些头文件的原因。
关于windows - 如何让 Clangd 在 Windows 上与 VS Code 一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58468719/
我是一名优秀的程序员,十分优秀!