Pull to refresh

Comments 35

PinnedPinned comments

Ровно до того, пока вкусы по ide совпадают. Меня например рыгать тянет от всяких кубов и прочих специализированных ide.

Ровно до того, пока сборка проекта это просто сборка бинаря, без хитрых ветвлений и зависимостей.

Давно подумываю перейти на CMake в том числе и потому что он автоматически создаёт compile_commands.json. Но пока не понял, как перенести сборку в /tmp. Буду признателен, если подскажете, куда копать.

Суть: в целях экономии ресурса SSD каталог для сборки проекта указываю на /tmp, который у меня в ОЗУ. В случае Makefile это решается просто через переменную builddir (`make builddir=/tmp/myproject`), которая обрабатывается в Makefile. В случае же с CMake обычно сборка происходит в подкаталоге buld в каталоге проекта. И я пока не нашёл способ это изменить.

Я использую GNU Make для сборки. Собираю на арче. Если вдруг надо из-под винды зайти, то там у меня стоит MSYS MinGW, в котором тоже есть arm-none-eabi-gcc и make. В CMake даже не лезу для микрухи

Спасибо Вам за статьи! Читаю-читаю каждую, и только сейчас заметил, что все они от одного автора)

Интересно, зачем такие вырвиглазные языки делают. Почему бы обычный синткаксис не использовать. Невозможно пользоваться ведь.

Так получилось, так вышло (с)

Интересно, зачем такие вырвиглазные языки делают. Почему бы обычный синткаксис не использовать. Невозможно пользоваться ведь.

Что Вам кажется проще для понимания: GNU Make или CMake?

Для понимания проще отдать это на откуп IDE. Результат будет неотличим от этих ручных ковыряний.

Ровно до того, пока вкусы по ide совпадают. Меня например рыгать тянет от всяких кубов и прочих специализированных ide.

Ровно до того, пока сборка проекта это просто сборка бинаря, без хитрых ветвлений и зависимостей.

Подозреваю, что людей, которых рыгать тянет от всяких cmake и прочих вещей, которые нам завещали предки, гораздо больше.

Меня тоже тошнить от gui-ide. Хочется собирать проекты скриптами.

А от чего не рыгать то? От кубоиде или от иариде что ли?

Отделив билд от редактирования, чувствуешь себя спокойнее, зная, что можешь быстро собрать проект где угодно, настроить ci какие и тп.

Пишу то я в вскод, с клиона перешел, по тем же причинам.

зная, что можешь быстро собрать проект где угодно

Ну если вам часто посреди чиста поля говорят на пеньке что-то вдруг собрать, то может быть, но это как сравнивать автомастерскую с ящиком с инструментами: ящик хоть и портативный, но и возможностей дает куда меньше, чем мастерская. Хотя и тут, скриптолюбцам чтоб настроить тулчейн с нуля скорее всего потребуется больше времени, чем скачать и настроить идешку.

При работе в IDE, если Вы случайно что‑то поменяете в XML (ewp IAR) и сохраните, то в один утренний день у Вас просто не откроется IDE проект.

Знакома такая ситуёвина?

О сборке даже и говорить не придется.

Далее у Вас начнется приступ судороги, конвульсии и паралич.

Нормально так, да?... 

Те, кто работают в IDE, обычно не правят XML не через интерфейс, т.к. зачем тогда IDE, да и в этих нагенеренных XML черт ногу сломит.

кто работают в IDE, обычно не правят XML не через интерфейс

Рано или поздно Вам скажут, что надо сделать 55+ конфигураций одной и той же прошивки с косметическими изменениями для разных клиентов.

И Вы замучаетесь мышкой в интерфейсе IDE все это курсором проклёвывать.

Да кто ж спорит, всякому инструменту - свое применение. Если бы мне понадобилось 55 конфигураций одной и той же прошивки или какой-то сложный CD - я б тоже, наверное, нагородил свой сборочный велосипед комбайн. Но сборка в рамках процесса написания кода и отладки также осталась бы в IDE, т.к. 99.9% времени, собственно, разработки уходит обычно не на сборку.

Рано или поздно Вам скажут, что надо сделать 55+ конфигураций одной и той же прошивки с косметическими изменениями для разных клиентов

накину на вентилятор)
у segger можно с полтыка сделать отдельную конфигурации сборки с наследованием свойств от базовой. а дальше переопределить то что душе начальству угодно. коллега так сделал поддержку пачки проектов загрузчиков (штук этак 10). функционал общий, отличие только в железе. Определил нужные настройки параметров через блок DEFINES.
так что аргумент слабоват)))

но согласен, cmake более контролируемый и его проще подружить с CI/CD на гитлаб сервере

Скрипты подготавливаются до степени - вписать команду из редми. Если низя, скрипты кал. (Такое часто, да)

На ci сервере собирать как? Тесты автоматом прогнать там? Я вот люблю иметь билд на х86 всегда еще.

А если вы хотите тех же новомодных агентов подрубить, а в вашем внебрачном сыне эклипса это случится уже к времени когда всех заменят?

Держать проект в IDE это намерено привинчивать себя, потому, что сложно освоить альтернативу. Это звучит неправильно, не находите?

На ci сервере собирать как? Тесты автоматом прогнать там?

Есть вот у меня инструкция как локально завести CI сервер.
Пуск Сервера Сборки Jenkins

https://habr.com/ru/articles/695978/

 проще отдать это на откуп IDE. Результат будет неотличим от этих ручных ковыряний.

На то у меня есть два развернутых ответа в виде отдельных текстов:

  1. Почему Сборка с Помощью GUI-IDE — это Тупиковый Путь https://habr.com/ru/articles/794206/

  2. Почему важно собирать код из скриптов
    https://habr.com/ru/articles/723054/

Если коротко, то GUI-IDE не позволяют масштабироваться при увеличении ассортимента прошивок в организации. В то время как переход на скрипты сборки на порядки повышает производительность труда программиста.

Я сейчас поддерживаю на плаву примерно 150 прошивок. И меня это даже не утомляет, так как все они собираются из скриптов.

Ну смейк все таки довольно ублюдошный язык, ничего тут не попишешь.

А у Вас какая версия STM32CubeMX на хосте? Во всех его свежих (>= v6.x) версиях можно сгенерировать скелет CMake проекта что называется "из коробки".

 Во всех его свежих (>= v6.x) версиях можно сгенерировать скелет CMake проекта что называется "из коробки".

У меня 6.9.0 и эта версия не предлагает генерацию проекта на основе CMake.

У меня стоит 6.17.0, там есть. Но по-моему даже с 15-ой версии уже есть

У меня стоит 6.17.0, там есть. Но по-моему даже с 15-ой версии уже есть

Я конечно же попробовал скачать последнюю версию stm32cubeMX, однако внезапно для себя обнаружил, что фирма ST накрыла Россию санкциями и наложила эмбарго.

We apologize for the inconvenience, but in accordance with the European Union's Export Regulation 2021/821, the US Export Administration Regulations (EAR), and other relevant rules and regulations, ST is not authorized to allow the download of this software from your country.

перевод на русскую словесность

"Приносим извинения за неудобства, но в соответствии с Регламентом Европейского союза об экспорте 2021/821, Правилами экспортного контроля США (EAR) и другими соответствующими правилами и положениями, компания ST не имеет права разрешать загрузку данного программного обеспечения из вашей страны."

Вот скриншот в доказательство

Есть ли возможность, пожалуйста, прислать Ваш дистрибутив утилиты stm32cubeMX версии 6.17.0?

У меня стоит 6.17.0, там есть. Но по-моему даже с 15-ой версии уже есть

В самом деле. STM32CubeMX Version 6.16.0  может сгенерировать шаблон для CMake проекта

появились скрипты

Бинарь разрастается в размере

но как??? Как так то!!!

Давно подумываю перейти на CMake в том числе и потому что он автоматически создаёт compile_commands.json. Но пока не понял, как перенести сборку в /tmp. Буду признателен, если подскажете, куда копать.

Суть: в целях экономии ресурса SSD каталог для сборки проекта указываю на /tmp, который у меня в ОЗУ. В случае Makefile это решается просто через переменную builddir (`make builddir=/tmp/myproject`), которая обрабатывается в Makefile. В случае же с CMake обычно сборка происходит в подкаталоге buld в каталоге проекта. И я пока не нашёл способ это изменить.

Переопределите переменную CMAKE_BUILD_DIR (вот тут все остальные переменные, которые могут пригодится). И можете загуглить про CMakePresets.json - для чего он нужен и как им пользоваться - может сильно помочь.

Переопределите переменную CMAKE_BUILD_DIR (вот тут все остальные переменные

Там нет переменной CMAKE_BUILD_DIR 

Сделать это с помощью CMake Presets - отличный вариант (через binaryDir).

Я использую GNU Make для сборки. Собираю на арче. Если вдруг надо из-под винды зайти, то там у меня стоит MSYS MinGW, в котором тоже есть arm-none-eabi-gcc и make. В CMake даже не лезу для микрухи

И это правильно. Make скрипты лучше писать самим. Так можно в большей степени контролировать процесс сборки.

Спасибо Вам за статьи! Читаю-читаю каждую, и только сейчас заметил, что все они от одного автора)

Спасибо Вам за статьи! Читаю-читаю каждую

Пожалуйста. Рад, что это оказывается полезный для работы материал.

а его добавить в туже папку где бинарник make по path и будет тоже самое

Sign up to leave a comment.

Articles