Size: a a a

2020 June 11

GK

Georgy Komarov in pro.vim
Julian =) Coffee
А кто как с си работает?
Меня интересует вопрос инклюдов, которые обычно прописываются уже в мейкфайлах и могут не быть в соседней папочке.
Как итог, clangd ругается на отсутсвующие инклюды. Как вы с этим боретесь?
Да, выше всё правильно про compile_commands.json. clangd по-другому не умеет.
Их можно генерировать автоматически, если используешь cmake. Нужно добавить set(CMAKE_EXPORT_COMPILE_COMMANDS ON) в CMakeLists.txt.
источник

JC

Julian =) Coffee in pro.vim
ага, понял
источник

JC

Julian =) Coffee in pro.vim
блен, ну у меня configure(
источник

JC

Julian =) Coffee in pro.vim
Лан, там вроде не сложные инклюды
источник

AS

Andrii Stadnik in pro.vim
Команда bear парсит любую систему сборки, насколько я понял. Ты же как-то всё равно собираешь файлы
источник

NG

Nicholas Guriev in pro.vim
Georgy Komarov
Да, выше всё правильно про compile_commands.json. clangd по-другому не умеет.
Их можно генерировать автоматически, если используешь cmake. Нужно добавить set(CMAKE_EXPORT_COMPILE_COMMANDS ON) в CMakeLists.txt.
только лучше не захардкоживать в CMakeLists.txt а передавать через аргументы запуска
источник

JC

Julian =) Coffee in pro.vim
а
источник

GK

Georgy Komarov in pro.vim
Nicholas Guriev
только лучше не захардкоживать в CMakeLists.txt а передавать через аргументы запуска
А почему?
источник

NG

Nicholas Guriev in pro.vim
Georgy Komarov
А почему?
не везде нужны эти сompile_commands.json
источник

GK

Georgy Komarov in pro.vim
Они очень быстро генерируются и не занимают места. Не вижу в этом проблемы.
источник

NG

Nicholas Guriev in pro.vim
1. на CI они лишние
2. тем, кто не использует clangd они побоку
3. система сборки должна оставаться гибкой
источник

GK

Georgy Komarov in pro.vim
Так можно и разные настройки тулчейнов, конфигурацию для отладки, etc. передавать флагами. Только зачем.
источник

NG

Nicholas Guriev in pro.vim
не вижу тут проблемы
источник

NG

Nicholas Guriev in pro.vim
Georgy Komarov
Так можно и разные настройки тулчейнов, конфигурацию для отладки, etc. передавать флагами. Только зачем.
именно! так и надо
источник

GK

Georgy Komarov in pro.vim
Хмм. У меня вот в проекте отдельные cmake-скрипты для 3х кросс-тулчейнов, там что-то порядка 75 loc. Представляешь, как такая сборка будет выглядеть, если писать это из консоли?
источник

JC

Julian =) Coffee in pro.vim
Andrii Stadnik
Есть, например, тула bear для этого. Я пишу bear make, он смотрит, как собираются файлы, сохраняет это, а потом сервер это использует
Это ок, что у меня пустой compile_commands.json?
источник

NG

Nicholas Guriev in pro.vim
Georgy Komarov
Хмм. У меня вот в проекте отдельные cmake-скрипты для 3х кросс-тулчейнов, там что-то порядка 75 loc. Представляешь, как такая сборка будет выглядеть, если писать это из консоли?
нуу... отдельные CMakeLists.txt тоже как вариант подойдут
источник

NG

Nicholas Guriev in pro.vim
но опять же set на глобальном уровне — часто лишнее
источник

NG

Nicholas Guriev in pro.vim
другое дело, если бы оставалась возможно переопределить значение переменной CMAKE_EXPORT_COMPILE_COMMANDS
источник

GK

Georgy Komarov in pro.vim
Nicholas Guriev
нуу... отдельные CMakeLists.txt тоже как вариант подойдут
Ну, да. Там даже не CMakeLists.txt, а просто cmake-файлы, которые активируются через -DCMAKE_TOOLCHAIN_FILE=path/to/script.cmake.
источник