Clangd - как установить флаги по умолчанию, которые будут использоваться при отсутствии `compile_commangs.json`?

Вероятно, это невозможно, но я все же хочу спросить. Я использую Clangd в качестве механизма автозаполнения для VSCode. Работает отлично, но есть одна проблема.

Официальные двоичные файлы Clang для Windows полагаются на заголовки стандартной библиотеки MSVC. Если MSVC не установлен, Clang и Clangd жалуются на отсутствие заголовков.

Есть флаг, который заставляет Clang использовать MinGW libstdC++ (--target=x86_64-w64-windows-gnu), который я должен включить в compile_commands.json.

Это решение работает, но было бы неплохо иметь разумное автозаполнение даже без compile_commands.json.

Есть ли способ сказать Клангду предположить --target=x86_64-w64-windows-gnu если нет compile_commands.json?

2 ответа

Решение

В какой-то момент после того, как вопрос был задан, расширение VSCode Clangd начало предоставлять в конфигурацию флаги по умолчанию: "clangd.fallbackFlags": ["--target=x86_64-w64-windows-gnu"].

Есть ли способ сказать Clangd, чтобы он предполагал --target=x86_64-w64-windows-gnu, если нет compile_commands.json?

Из clangd начало работы :

compile_flags.txt

Если все файлы в проекте используют одни и те же флаги сборки, вы можете поместить эти флаги по одной на строку в compile_flags.txt в корневом каталоге исходного кода.

Clangd будет считать, что команда компиляции - это clang $FLAGS some_file.cc.

Создание этого файла вручную - разумное место для начала, если ваш проект довольно прост.

Просто создайте compile_flags.txt файл с --target=x86_64-w64-windows-gnu.

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