VS Code + CMake (Windows)

Если посмотреть современные проекты, выложенные на github, то они выполнены так, чтобы их сборка могла производиться в контейнерах без использования визуальных сред. Это сделано для того, чтобы можно было использовать современные инструменты тестирования и развёртывания в автомате.

Мои arduino проекты можно собрать и протестировать средствами github. Если же вы используете специализированные IDE, то вам сначала нужно взять свой “чайник” и преобразовать его во что-то, что можно потом использовать для автоматизации тестирования или сборки. У вас есть уникальные “чайниковские” проектные файлы для каждого уникального “чайника”: Keil, Eclipse, CCS, CubeIDE, IAR и так далее.
В случае использования VS Code + CMake у вас нет такой “привязки”, т.к. нет проектных файлов.
В IAR для AVR, к примеру, как и в любом IAR есть специальные “чайниковские” консольные утилиты, которые входят в состав “чайника”, чтобы собирать только именно эти “чайниковские” проектные файлы и никакие другие. У CubeIDE, как у Eclipse, тоже есть уникальные инструменты, которые позволяют развернуть make-окружение из эклипсовых проектных файлов.
Кому эта вся велосипедная “чайниковость” осточертела - уходят с этих платформ. Это эволюционный процесс.

По поводу make и CMake в контексте сборки Arduino проектов из командной строки.

Когда-то я пользовался вот этим репозиторием для сборки Arduino проектов в автомате:

Теперь я делаю всё то же способом, указанным в начале темы. Я честно пытался разобраться когда-то в Arduino-Makefile (нужно было изменить поведение), но теперь в здравом уме никто не будет тратить на это своё личное время.

Можете сравнить оба подхода.

По любому, у заказчика должно собираться в IDE безо всяких там.
Кстати, у Вовки можно запускать без исходника. Но, не совсем удобно. И автор не хочет давать людям эту возможность.(

uni, вы так много говорите… Ну, а в чём фишка? В двух словах. Какие преимущества?

1 лайк

Опять же, вот мои проекты закрытые. На свет простым смертным может выйти только hex, exe или bin под конкретное устройство или МК.
Я так понимаю вся эта заваруха больше подходит для всяких Опенсорсов.

Можно и в двух специально для вас: VS Code + CMake. Я тему так назвал, чтобы сразу понятно стало о чём речь.
Основное преимущество в гибкости и единообразии при работе с современным окружением разработчика.

Если прочитать мой первый пост, то я написал: “для тех, кто хочет попробовать”. Многим людям нужно просто показать как это вообще выглядит и с чего начать, а нужно это им или нет они поймут только когда попробуют.

Разницу между Ладой Ларгус и Танк 500 можно понять только если попробовать обе, я попробовал. Танк 500 не плох, но дороговат. Словами говорить про Танк 500 бессмысленно.

Это почти как вечная борьба поклонников windows и linux…

1 лайк

В общем, товарищи, специализированный инструмент всегда лучше универсального.
Остальное это лишь личные предпочтения и привычки. Вот я, например, сплю на потолке. Знаете как это полезно? На потолке теплей, меньше пыли и грязь не скапливается, а так же можно лёжа плеваться вниз.

Касаемо ардуины - это дает какие-то преимущества против связки VS Code + плагин Arduino by Microsoft ?

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

Как я писал выше, современные проекты используют cmake для сборки. Я подключаю такие проекты к своим проектам. Есть очень для меня интересные, как например, библиотека LibuP7, которая позволяет делать продолжительный анализ с записью сигналов и событий из микроконтроллерной системы. Это нужно для целей отладки. Там используется специальная техника “сжатия” данных для передачи по последовательному каналу связи.

Так вот собирается эта библиотека при помощь cmake. Вы должны сделать отладочную конфигурацию своего проекта и собрать её, используя части из LibuP7. Как это сделать, если от тебя сокрыта сборочная конфигурация мне неясно. А вот иметь из коробки систему записи сигналов на узком канале очень хочется. Там специальное ПО используется - Байкал называется. Свободное.

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

Некоторые используют PlatformIO, некоторые что-то другое, я в демках показываю как можно самостоятельно настраивать проект под свои задачи без посредников. На самом деле иногда это не совсем так. Например, библиотека modm использует python для генерации проекта. Это достаточно современная библиотека, для её сборки нужна поддержка стандарта C++2x.

Если немножко попривыкнуть, то можно самому выбирать библиотеки или их комбинации, как инструменты для реализации конкретного проекта - тут ардуино core воткну, а тут и AVR_C потянет, а тут и то и это понемножку, а здесь RTOS воткну и так далее. Я примерно так все свои примеры в репозитории и собираю - что хочу, то и использую. Сложный проект может состоять из кучи разнородных частей.

Оффтоп (наверное).
Заведи блог. Не видео, обычный текстовый (если еще нет). Не многие в настоящем умеют свои мысли текстом описывать, ленятся и включают камеру. А там «эээ, ну… как бэ…». В твоих текстах прослеживается мысль без слов паразитов.
Я серьезно. :slight_smile:

не пугай…это первый признак шизофрении

Последнии дни пугаешь ты ))

1 лайк

Я не говорил, что блогер. Мне это не нужно. Видео пишу и для себя, чтобы не забыть как что делается. Я не единственный, кто вещает про использование VS Code + CMake. На ютубе можно поискать англоязычные ролики embed-блогеров про это. Они как раз умеют за 5 минут ужать и донести. Мне жаль тратить на это время. Я не готовлюсь практически к своим роликам, если не считать код, который я проверяю неоднократно. Мне важно, чтобы проекты из репозитория собирались и работали. Я надеюсь, что этого может быть достаточно, если выбрать из их числа те, которые понятны и на их основе уже продолжать изучение самостоятельно.

Я сам обучаюсь таким образом. Беру набор репозиториев, который вдруг на глаза попался, и пробую понять что там автор делал и как. Есть очень интересные подходы, вот из недавнего:

Есть на что посмотреть. Я добавлю в свои демки примеры использования некоторых библиотек отсюда. Интересно нестандартные типы попробовать и библиотеку CRC.

Забыл ссылку дать на P7 и LibuP7:

вот бы кто посоветовал пошаговый мануал как разобраться в настройках самого VS Code , какие есть возможности во всяких .settings.json и launch.json

1 лайк

Обзор нескольких примеров использования библиотеки Mcucpp для AVR.
Окружение разработки: Windows 11, scoop, VS Code, CMake, AVR GCC 10.1/12.1, Proteus 8.15 SP1.
Уровень: для начинающих и продолжающих пользоваться Arduino платами, основанными на AVR.
Исходники взяты из репозитория, который указан в первом сообщении.

https://www.youtube.com/watch?v=auUEUNs8-Ew

И хотел бы попробовать, но ничего же не понятно.

Допустим, я беру пакет поддержки СТМ32 в ардуино. С VS_Code проблем нет, любой ардуино пакет можно открыть в VS_Code, вообще ничего не настраивая. Но схема сборки там будет Ардуиновская - через файлы platform.txt и board.txt
Как от этого перейти к сборке через Cmake ? Есть где-нибудь подробная инструкция?

1 лайк

Чистый VS Code ничего не знает про platform.txt и board.txt. Если удаётся “открыть” что-то в VS Code, то это означает, что за вас это делает какой-то плагин.
Я разбирал в конце первой части как собрать скетч, который реализует modbus slave устройство. Там есть только cmake и никаких platform.txt и board.txt. Папка с проектом находится в этом же репозитории и подготовлена для сборки через cmake. Правда это всё для библиотеки ArduinoCore-avr.

Краткое рассмотрение сборки этого демо-проекта конечно вряд ли поможет при старте с абсолютного нуля. Дело в том, что тема до сих пор ещё “новая” и многие опытные товарищи уже не хотят “опускаться” до уровня Arduino, т.к. есть гораздо более интересные HAL библиотеки для STM32.

Я посмотрю на досуге, если смогу для blue-pill что-нить наваять, используя ArduinoCore для STM32 (не знаю сейчас какой репозиторий используется для этого), то приведу пошаговую инструкцию.

Можно попробовать самостоятельно поискать готовые cmake файлы для сборки Arduino проектов для STM32. Где-то рядом с ними наверняка обнаружится и проект.