в Clion?
Что подразумевается под автоматической работой CMake в CLion? Что-то вроде ассистируемой компоновки скрипта по настройкам проекта, заданным в GUI IDE? Хотя я зря уточняю - я вообще плагинов в CLion не знаю, кроме Material Theme UI и Rainbow Brackets. И CodeMap еще был, но где-то потерялся.
Ну да, типо как в VS.?
cmake - это скрипт, заменяющий миллион окошек в IDE "автоматической работы" он не подразумевает
И значительно большее. Я, например, дозавожу поддержку CMake-вставок, обрабатываемых CMake'ом же в крестовый код (позволяет кросс-платформенно подтягивать ресурсы времени компиляции в единицы трансляции, например), за что другие члены команды на меня уже косо посматривают =) Если удастся повесить этот этап на clangd малой кровью - можно будет выпиливать препроцессор из языка, в принципе.
Почему это вставки CMake, а не стандартные configure_file? И к чему вообще там clangd?
Вставки CMake потому, что это не основное предназначение. А clangd, чтобы linter учитывал потенциальную кодогенерацию, которую я безусловно буду хотеть.
Ну по описанию это именно configure_file без лишних костылей ("кросс-платформенно подтягивать ресурсы времени компиляции в единицы трансляции") clangd исключительно про LSP, точно ли он?
Конкретно для этого configure_file действительно можно было бы использовать, полагаю, Вы правы. По поводу clangd: Я, например, хочу сгенерировать набор шаблонных операторов для класса. Я могу это сделать перед компиляцией, безусловно, однако я не могу заставить мою IDE не орать на меня матом, когда я попытаюсь этими (несуществующими) операторами воспользоваться.
Можете, конечно Сложите кодгенеренные файлы симейком в отдельную либу и target_link_libraries с ней
Так их ведь нет еще, что складывать?)
> дозавожу поддержку CMake-вставок, обрабатываемых CMake'ом же в крестовый код на уровне чего, препроцессинга сорцов cmake'ом?
Есть, вы же сгенерили их на этапе конфигурации
Так нет же. Я пишу код и вставил туда свой кейворд, например. Я еще ничего не собирал (и возможно даже не сохранил). Чуть позже я воспользуюсь тем, что кейворд должен по-моему значить. Но он ничего не значит, поскольку clangd ничего о моих семантиках не знает. И он начнет ругань.
теперь я понимаю, почему коллеги косо смотрят
Ваших коллег можно понять
И я ожидал это увидеть, однако, и здесь) Однако отмечу, что тулзы патчить как раз совершенно не нужно. CMake во все это умеет и, как я подозреваю, clangd тоже можно научить без особой эзотерики.
Обсуждают сегодня