Понятный способ настроить 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 работает. Может лязг не работает с такими путями? Может ли кто-нибудь пролить свет на это?

0 ответов

Другие вопросы по тегам