Касаемо #
vscode в связке с #
cmake для проектов на #
C++.
Что использование этого IDE-подобного редактора с #
clangd намного интереснее, нежели с IntelliSense от мелкомягких.
При этом,
расскрасить синтаксис можно даже лучше, чем в случае с #
Go, но абсолютно
тем же образом.
1) достаточно из extension поставить только лишь
CMake Tools и
clangd — актуально для #
VSCode / #
VSCodium / #
Uncodedесли при этом ещё и C/C++ extension от Microsoft
ms-vscode.cpptools стоит, то лучше выключить — на самом extension нажать Disable или же в `settings.json` дописать:
"C_Cpp.autocomplete": "disabled",
"C_Cpp.intelliSenseEngine": "disabled",
2) для работы #
clangd надо, чтобы #
cmake генерировал `compile_commands.json` файл. потому или в `CMakeLists.txt` должно быть:
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
или в параметры cmake добавить: `-DCMAKE_EXPORT_COMPILE_COMMANDS=1`
3) в настройках CMake Tools — в GUI варианте или же в `settings.json` надо сказать cmake копировать этот самый `compile_commands.json` поближе к исходникам:
"cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json",
актуально в том случае, когда у тебя хитрое расположение кеша и билдовой:
"cmake.buildDirectory": "${workspaceFolder}/../build/${buildType}-${buildKitVendor}",
в крайнем случае, вопрос можно решить и на уровне `CMakeLists.txt`, добавив в него не только лишь:
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
но и так же создание ссылки:
file(CREATE_LINK
"${CMAKE_BINARY_DIR}/compile_commands.json"
"${CMAKE_SOURCE_DIR}/compile_commands.json"
SYMBOLIC )
Пример чего и как можно дописать в `settings.json` для расскраски синтаксиса:
"editor.semanticHighlighting.enabled": true,
"editor.semanticTokenColorCustomizations": {
"enabled": true,
"[название-темы]": {
"rules": {
"namespace": "#b1a3f1",
"parameter": {
"fontStyle": "italic",
"foreground": "#46d9bb"
},
"readonly": {
"foreground": "#b5f494",
"fontStyle": "italic"
},
"variable.readonly": "#878594",
"type.defaultLibrary": "#dec7c7",
"type": {
"foreground": "#92ef94b0",
"fontStyle": "italic"
},
"function.defaultLibrary": "#d09999",
"function": "#bc9478",
"function.definition": "#bc9478",
"method.definition": "#fb8b8b",
"method": "#fb8b8b",
"property": "#14bbb6",
"variable": "#b7dddc",
"variable.parameter.cpp": "#622b99",
"class": "#cca3cc",
}
}
},
"editor.tokenColorCustomizations": {
"[название-темы]": {
"textMateRules": [
{
"scope": "comment.line.double-slash.cpp",
"settings": {
"foreground": "#106a8b",
},
},
{
"scope": "punctuation.definition.comment.cpp",
"settings": {
"foreground": "#106a8b",
}
},
],
},
},
т.е. можно комбинировать и tokenColorCustomizations, и semanticTokenColorCustomizations, который через #
LSP -сервер в лице #
clangdА тыкать в текст кода на C++ и выяснять «а что это такое», под каким идентификатором проходит — можно через Ctrl+Shift+P выбрав «Inspect Editor Tokens and Scopes».
`[«название-темы»]` можно убрать, подняв все записи на уровень выше — тогда они будут применяться для любой темы, а не только когда включена «название-темы».
#
редакторыкода #
softwaredev #
software #
lang_ru #
programming #
IDE @
Russia @
Tech Cyborg