Как заставить Clangd работать правильно с VS Code на Windows - PullRequest
0 голосов
/ 20 октября 2019

Я не могу заставить clangd обеспечить автозаполнение для любых внешних заголовков, таких как из SFML.

Я попытался сделать то же самое на виртуальной машине Ubuntu, и все работало правильно. Файл 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)

...