Интересный запрос на привлечение, чтобы добавить варианты сборки

Рик Кимбалл
Пн 11 декабря 2017 г., 17:20
Ребята из STM32 добавили интересную тягу к своей сути. Это позволяет добавлять build_opt.H к вашим файлам эскиза. Этот файл затем используется в качестве файла @ в командной строке. Это позволяет переопределять определения в основных вещах, таких как F_CPU и т. Д. С ядром Libmaple Этот подход может быть простым способом управления флагом -deserial_usb или D -dconfig_maple_mini_no_disable_debug из пользовательского эскиза вместо уровня платы. Полезно для флагов, вы можете добавить доски.Файл TXT, но вы пропускаете его, потому что вы не хотите нарушать каждый эскиз.

https: // github.com/stm32duino/arduino_c ... 2/pull/174

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

https: // github.com/stm32duino/arduino_c ... /проблемы/41

Это может быть о чем -то, о чем нужно подумать о ядре Libmaple.

Стивестронг
Пн 11 декабря 2017 г., 17:59
+5 : mrgreen:
Но только если он ничего не сломает в существующем процессе сборки.

ZMEMW16
Пн 11 декабря 2017 г., 19:30
Кирпичи, построенные на кирпичах на кирпичах
SRP

Rogerclark
Пн 11 декабря 2017 г., 19:43
Спасибо, Рик

что’S очень интересно

Что произойдет, если файл не присутствует ?
Согласно PR, он создается, если он’S не присутствует, но я не мог видеть, что его создало.

Это’Sertsinly очень мощная функция и решит ряд проблем, которые требуют определения для добавления в сборку

Знаете ли вы, библиотеки могут предоставить этот файл или он’S только главный набросок ? (Поскольку я знаю, что IDE делает странные вещи, такие как копирование различных файлов в каталог Temp, чтобы скомпилировать их, мне интересно, может ли этот файл, помещенный в библиотеку, может оказаться в каталоге Temp Build

Rogerclark
Пн 11 декабря 2017 г., 19:52
Рик

Я прочитал другую ссылку, и я вижу, как вы предлагаете создать файл, используя другой внешний скрипт, но я дону’t, чтобы увидеть этот сценарий в изменении STMS.

Возможно, они используют эту функцию для какой -то другой цели?

Rogerclark
Пн 11 декабря 2017 г., 8:14 вечера
Извини.. Но вот еще один вопрос

Могут ли рецептные крючки иметь разные сценарии на разных платформах ?

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

Рик Кимбалл
Пн 11 декабря 2017 г., 20:58
[Rogerclark - Пн 11 декабря 2017 г., 19:52] - Я прочитал другую ссылку, и я вижу, как вы предлагаете создать файл, используя другой внешний скрипт, но я дону’t, чтобы увидеть этот сценарий в изменении STMS.
[Rogerclark - Пн 11 декабря 2017 г., 8:14 вечера] - Извини.. Но вот еще один вопрос
Могут ли рецептные крючки иметь разные сценарии на разных платформах ?
Он позаботится обоих ваших вопросов с тем, что он здесь делает:
+# Pre и Post Build Hooks
+рецепт.крючки.предварительно.1.шаблон.Windows = cmd /c "Если нет.PATH} \ Sketch \ build_opt.h mkdir {build.PATH} \ Sketch & Тип NUL > {строить.PATH} \ Sketch \ build_opt.час"
+рецепт.крючки.предварительно.1.шаблон.linux = bash -c "[-f {build.PATH}/sketch/build_opt.H] || mkdir -p {build.Путь}/Эскиз && коснуться {сборка.PATH}/sketch/build_opt.час"
+рецепт.крючки.предварительно.1.шаблон.macosx = bash -c "[-f {build.PATH}/sketch/build_opt.H] || mkdir -p {build.Путь}/Эскиз && коснуться {сборка.PATH}/sketch/build_opt.час"
Он использует файл с именем build_opt.H вместо файла, который я предложил. Я использовал файл TXT, но это не то, что вы можете добавить в качестве новой вкладки в Arduino IDE. Вы можете добавить .h Файл, хотя и это то, что он ищет. Он проверяет, есть ли в эскизе этот файл, используя рецептные крючки выше. Если файл не существует, он использует целевую платформу для создания пустой build_opt.час ... Использование типа NULL >build_opt.h "на окнах и" трое > build_opt.H "на Linux и OSX '

Рик Кимбалл
Пн 11 декабря 2017 г., 21:09
[Стивестронг - Пн 11 декабря 2017 г., 17:59] - +5 : mrgreen:
Но только если он ничего не сломает в существующем процессе сборки.
Абсолютно!

Мой ответ на этот вытекает из другого запроса на PR STM32DUINO CORE, который взламывал доски.Файл TXT для работы с конфигурацией уровня эскиза, который не может быть легко. Я не сохранил модификацию, чтобы проверить это. Это был скорее эксперимент, чтобы увидеть, будет ли то, что я собираюсь предложить, сработает.

Это изменение в некотором роде, что касается модов платформ Arduino IDE. Я лично думаю, что Arduino IDE нужен способ сделать командную строку определить изменения на основе эскиза. Это не предлагает собственное решение. Это просто работает в их пределах, чтобы попытаться получить что -то, что может сработать. Маловероятно, что этот подход получит покупку на официальных платформах Arduino. Это главная причина, по которой я даже не предложил это в качестве проблемы с GitHub или тянуть. Просто что -то, чтобы задуматься.

Rogerclark
Пн 11 декабря 2017 г., 21:53
Привет, Рик

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

А .txt vs .H, это стыдно, что IDE не может поддержать .TXT, потому что я согласен, что это не идеально, называя это .H, но, вероятно, лучше, чем другие варианты именования, которые доступны

fpistm
Вт 12 декабря 2017 г. 5:17 утра
Спасибо, Рик. ;)
[Rogerclark - Пн 11 декабря 2017 г., 19:43] - Знаете ли вы, библиотеки могут предоставить этот файл или он’S только главный набросок ? (Поскольку я знаю, что IDE делает странные вещи, такие как копирование различных файлов в каталог Temp, чтобы скомпилировать их, мне интересно, может ли этот файл, помещенный в библиотеку, может оказаться в каталоге Temp Build
Я проверю, что Роджер.
[Rogerclark - Пн 11 декабря 2017 г., 21:53] - Я не вижу никаких проблем с добавлением этого, потому что, если не указан build_opt, это не должно иметь значения
Правильно, это цель.
[Rogerclark - Пн 11 декабря 2017 г., 21:53] - А .txt vs .H, это стыдно, что IDE не может поддержать .TXT, потому что я согласен, что это не идеально, называя это .H, но, вероятно, лучше, чем другие варианты именования, которые доступны
О .h расширения, он должен избежать создания сценариев для каждой ОС и иметь возможность открывать ее с помощью IDE (которые копируют его автоматически в {Build.PATH}/Sketch Polder в начале сборки).

Это несколько крючков до и после сборки, которые могут быть полезны:
https: // github.com/arduino/arduino/wiki ... CE-IDE-165

ПРИМЕЧАНИЕ: я не проверяю его на Mac OS, если кто -то может проверить.

Rogerclark
Вт 12 декабря 2017 г. 5:19
Фредерик

Спасибо

У меня есть Mac, поэтому я постараюсь проверить его позже

fpistm
Вт 12 декабря 2017 г. 8:31
[fpistm - Вторник 12 декабря 2017 г. 5:17 утра] -
[Rogerclark - Пн 11 декабря 2017 г., 19:43] - Знаете ли вы, библиотеки могут предоставить этот файл или он’S только главный набросок ? (Поскольку я знаю, что IDE делает странные вещи, такие как копирование различных файлов в каталог Temp, чтобы скомпилировать их, мне интересно, может ли этот файл, помещенный в библиотеку, может оказаться в каталоге Temp Build
Я проверю, что Роджер.
Так что нет, это невозможно, поскольку файл библиотеки копируется в {строить.Путь}/Библиотеки/<Имя либера>
Это должно быть возможно, добавив тот же механизм с рецепт.крючки.библиотеки.предварительно.ЧИСЛО.шаблон (называемый до компиляции библиотек)
Но я думаю, что это добавит слишком много проблем (другое имя файла, как насчет нескольких библиотек....).

В настоящее время я советую использовать только один файл параметров сборки на уровне Sketch, чтобы избежать путаницы.

Rogerclark
Вт 12 декабря 2017 г. 9:23
Фредерик

Я согласен. Это не стоит усилий и т. Д., чтобы иметь это для библиотек на данный момент

fpistm
Вт 12 декабря 2017 г. 9:36 утра
Я сделал некоторый тест и преуспел в том, чтобы включить некоторые варианты для LIBS.

Один пример с использованием библиотек STM32THERTENT и LWIP:
Добавление в build_opt.час: -DLWIP_DEBUG=1 -DLWIP_DBG_TYPES_ON=LWIP_DBG_ON -DIP_DEBUG=LWIP_DBG_ON "-DAPI_LIB_DEBUG LWIP_DBG_ON"

Rogerclark
Вт 12 декабря 2017 г. 10:01
ХОРОШО

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

Единственный раз, когда мне нужно закрыть и открыть IDE, это когда я внося изменения в платформу.TXT или доски.текст

fpistm
Ср 13 декабря 2017 г. 5:49
Да, когда вы редактируете источник, он перестраивается, но в этом случае он не является частью источника, поэтому он не восстанавливается, поскольку он не видит никаких изменений.
с Ардуино 1.8.x, изменение в платформе.TXT не требует перезапуска IDE. Только доски.TXT требует перезапуска или, по крайней мере, откройте менеджер досок.

Rogerclark
Ср 13 декабря 2017 г. 6:27
Фредерик

Я не осознавал Arduino 1.8.X не нужно было перезагрузить для изменений в платформу.txt, это полезно знать.

Mrburnette
Ср 13 декабря 2017 г. 15:15
О, мой, мой, мой ...

У меня действительно смешанные эмоции по поводу этой реализации; яне Му Энxperience, обходные работы редко бывают полностью продуманными. То есть они становятся хрупкими, так как реализация часто реализуется без полного голосования команды.

В любом случае необходимость переопределения программиста в течение долгого времени требовалась долгое время. Есть только одно правильное место, чтобы поместить такую ​​функцию, которая находится в Java IDE ... Будь то вариант, управляемый меню, или будь то в вкладке «Исправлено». Лично, когда IDE загружает файл плат, этот файл и любые другие соответствующие файлы должны быть проанализированы и загружены в IDE для наблюдения/модификации при создании нового проекта, а затем записаны в папку проекта, чтобы перечитать и использовать в будущее. Arduino затрудняет «схватить» проект для доставки для более крупной аудитории. В связи с этим он должен работать как Cypress IDE, где новый проект копирует в проект все названные библиотеки и настраиваемые опции, так что проект можно легко поддержать.

Луча

Рик Кимбалл
Ср 13 декабря 2017 г., 17:09
Несмотря на то, что я предложил это, я только наполовину взволнован этим. Я действительно не выступал за его немедленную реализацию. Я согласен с Mrburnette, что это будет лучше реализовано в Arduino IDE. К сожалению, кажется, что изменения происходят на IDE в ледниковом темпе, не обращая внимания на вещи, которые приносят пользу нердуино.

Я думаю, что Фред проделал хорошую работу, реализовав ее. Может быть. Для ядра Libmaple, я думаю, мы должны подождать и увидеть подход.

fpistm
Ср 13 декабря 2017 г., 21:04
Да, ты прав. Это определенно должно быть в IDE.
В любом случае, вместо добавления нескольких пользовательских меню или модифицирующих досок.TXT, я думаю, что функция Hooks может помочь облегчить настройку для конечного пользователя.
Я продлю его, чтобы восстановить все, если файл параметров сборки будет изменен.

Библиотека RTC