Понятный способ настроить LSP (vim-lsc) с vim + CMake?
Я пытаюсь настроить LSP с помощью vim + cmake. Я использую плагин vim-lsc в качестве клиента и clangd в качестве сервера.
Структура папки:
- Контрольная работа/
- test.cpp
- test.h
- CMakeLists.txt
test.h:
#ifndef TEST_H
#define TEST_H
class Apple {
public:
int size;
};
#endif
test.cpp:
#include <iostream>
#include "test.h"
int main() {
Apple apple;
return 0;
}
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(my_test)
add_executable(test test.cpp)
target_include_directories(test PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
~/.vimrc:
let g:lsc_server_commands = {'c': 'clangd', 'cpp': 'clangd'}
Я строю с
mkdir build
cd build
cmake ..
make
Компилируется отлично, без ошибок и предупреждений.
Однако при редактировании test.cpp
в vim vim-lsc показывает ошибки, не обнаруживая определяемые пользователем файлы заголовков и типы, определенные в них. Например, в вышеуказанном проекте показаны две следующие ошибки:
test.cpp|3 col 10 error| 'test.h' file not found [pp_file_not_found]
test.cpp|6 col 5 error| Unknown type name 'Apple' [unknown_typename]
Как мне настроить это так, чтобы заголовки в проекте определялись правильно?
РЕДАКТИРОВАТЬ: проблема несколько изменилась. Я добавил файл compile_commands.json в каталог верхнего уровня, но безрезультатно. Я подозреваю, что это связано с тем, как пути представлены в Git Bash в Windows.
Compile_commands.json имеет следующие пути inlcude:
-IE:\\C:\\Test
Если класс определен в том же файле, протокол lsp работает. Может лязг не работает с такими путями? Может ли кто-нибудь пролить свет на это?