Как настроить VS Code для C++ с поддержкой clangd?
Отказ от ответственности: я полностью знаком с VS Code, поэтому, пожалуйста, будьте осторожны со мной.:-)
Я пытаюсь настроить VS Code дляC++.
Однако я явно хочу настроить его так, чтобы он использовал протокол языкового сервера для связи сclangd
при обработке C++- файлов.
Я уже установил clangd
в моей системе (Ubuntu Linux) и официальном расширении vscode-clangd с рынка VS Code, и я также изменил его настройки так, чтобы clangd
должно быть найдено этим.
Однако сейчас я потерялся.
Когда я открываю *.cpp
или же *.hpp
Файл VS Code рекомендует мне некоторые другие расширения (например, официальное расширение Microsoft "C/C++" с поддержкой IntelliSense), но я не вижу, где и как clangd
действительно помогает мне.
Использование расширения Microsoft "C/C++", кажется, работает из коробки, но как я могу использовать clangd
?
Спасибо за любую помощь.
1 ответ
Могу поделиться некоторыми своими настройками.
Расширение Microsoft "C/C++" отлично подходит для отладки, думаю, вам стоит его установить.
Между тем, Clangd дает более точный результат при поиске ссылок. Итак, я предлагаю сохранить официальное расширение C / C++ для отладки, но отключить его intelliSense. Поместите следующие строки в свой settings.json
"C_Cpp.intelliSenseEngine": "Disabled",
"C_Cpp.autocomplete": "Disabled", // So you don't get autocomplete from both extensions.
"C_Cpp.errorSquiggles": "Disabled", // So you don't get error squiggles from both extensions (clangd's seem to be more reliable anyway).
"clangd.path": "/path/to/your/clangd",
"clangd.arguments": ["-log=verbose", "-pretty", "--background-index", "--compile-commands-dir=/path/to/your/compile_commands_dir/"]
При правильной настройке вы увидите вывод clangd из окон ВЫХОДА рядом с проблемами и Терминалом.
Это должно работать без какой-либо конфигурации. Я проверил это в Windows, и оно работает просто отлично - у меня не установлено расширение C/C++ в коде Visual Studio, просто vscode-clangd
и он сообщает об ошибках, обеспечивает завершение кода и т. д. Это означает, что расширение работает, поскольку в "основном" коде Visual Studio таких функций нет.
Visual Studio Code все еще предлагает популярные расширения C/C++, но вы можете игнорировать это, это не значит, что vscode-clangd
не работает
Обратите внимание, что редактируемый файл должен иметь стандартное расширение, например .cpp
или же .c
быть признанным и действующим vscode-clangd
, См . Исходный код расширения для списка всех поддерживаемых расширений.
Для простых проектов может быть недостаточно иметь конфигурацию, но для более сложных вам, конечно, нужно сообщить Clang такие вещи, как каталоги, флаги компиляции и т. Д. Это можно сделать, создав compile_flags.txt
файл, где вы вводите аргументы для Clang, по одному на строку. Вы можете поместить этот файл в ту же папку, что и ваши исходные файлы, или в любое место дерева. После редактирования этого файла необходимо перезапустить код Visual Studio, чтобы изменения вступили в силу.
Кроме того, вы можете создать (или позволить CMake генерировать) compile_commands.json
файл. Он имеет следующий синтаксис:
[
{ "directory": "/home/user/llvm/build",
"command": "/usr/bin/clang++ -Irelative -DSOMEDEF=\"With spaces, quotes and \\-es.\" -c -o file.o file.cc",
"file": "file.cc" },
...
]
Смотрите Clang документы для более подробной информации.