From c5ccb1d06337fd527868c79ab391bf1a0ae3926c Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Tue, 14 Jul 2020 11:59:03 +0300 Subject: [PATCH] =?utf8?q?=D0=9D=D0=B0=D1=83=D1=87=D0=B8=D0=BB=20clangd=20?= =?utf8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B5=20=D1=81=D0=BE=20=D1=81?= =?utf8?q?=D0=B2=D0=BE=D0=B8=D0=BC=20=D0=BA=D0=BE=D0=B4=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit clangd выполняет роль LSP сервера для C* кода. Никакой настройки не требуется: он уже будет многое отрабатывать без проблем. Однако, если есть специфичные пути для include-ов, о которых он ничего не знает, то он будет выдавать warning-и на неизвестные ему вещи. Я видел что упоминался compile_commands.json -- в нём задаются все опции компиляции каждого исходного файла. CMake подобные файлы может делать самостоятельно, но я его не использую. Делать руками у меня получалось, но как-то не хочется руками вести redo- (прежде Make) based систему сборки и ещё этот compile_commands.json. Но никто не запрещает это автоматизировать конечно же. В https://clang.llvm.org/docs/JSONCompilationDatabase.html есть упоминание compile_flags.txt в котором просто перечисляются флаги компиляции общие для всех файлов. Вот такой redo целью в своём C проекте его создаю: % cat compile_flags.txt.do redo-ifchange ../cc . ../cc echo "$PCSC_CFLAGS $TASN1_CFLAGS $CRYPTO_CFLAGS $CFLAGS -I$INCDIR" | tr " " "\n" | sed "/^$/d" | sort | uniq И теперь clangd знает обо всех зависимостях, даже установленных не в системных директориях. Для моего подобного решения хватает и оно достаточно простое. -- 2.48.1