Название: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Декабрь 16, 2018, 22:45 Всем привет, не теряю надежды на "возвращение" QBS-а :)
Понадобилось тут заюзать IAR для компиляции bare-metal под-проекта: сам "главный" проект конечно был написан на QBS, а вот "железная" часть была в IAR. И компилять/редактировтаь отдельно эту "железную" часть было не комильфо. Посидев пару часиков, набросал модуль в QBS для поддержки IAR: https://github.com/denis-shienkov/qbs/tree/iar (ветка 'iar') Также первый его вариант был добавлен на Qt Code Review: https://codereview.qt-project.org/#/c/248265/ Использовать очень просто: 1. Добавляем в QtCreator как обычно новые кастомные C/C++ компиляторы от IAR. 2. Создаем какое-нить новое bare-metal у-во (например, stmXXXX). 3. Создаем новый кит (комплект), к которому привязываем это у-во и компилятор. 4. В QBS св-вах комплекта указываем: qbs.toolchain: iar 5. Потом копируем файлы (из гитхаба, там свежее, т.к. на код-ревью еще не обновил этот свежак): * IarProbe.qbs в <путь к установленному Qt-meta (например установленный из MaintenanceTool)>\Tools\QtCreator\share\qtcreator\qbs\share\qbs\imports\qbs\Probes\ * iar.js и iar.qbs в <путь к установленному Qt-meta (например установленный из MaintenanceTool)>\Tools\QtCreator\share\qtcreator\qbs\share\qbs\modules\cpp\ 6. Дальше портируем проект (*.ewp) из IAR в QBS, открываем в Qt Creator и наслаждаемся красивой подсветочкой и быстрой компиляцией. :) Вот тут ссылка на пример проекта для STM32F407 (сгенеренный CubeMX): https://yadi.sk/d/G71tovsmKOu9Qg ЗЫ: 1. Сейчас там поддерживается только IAR for ARM (EWARM). 2. Отладки, естественно нет. Кому итересно - просьба потестить, мож что подсказать и т.п. :) Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: Авварон от Декабрь 17, 2018, 13:05 Неплохо!
навскидку - prepareИДрузья содержат много копи-пасты, можно вынести в функцию Вместо Код: return "iccarm" + compilerExtension; лучше взять fileName из пробы раз уж её юзаете (в конце-концов, экзешник может быть завернут в батник и проба это (по идее) должна схавать) Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: Авварон от Декабрь 17, 2018, 13:17 Вместо
Код: product.cpp.compilerPath Это нужно для того, чтобы корректно работали группы файлов - можно на группу файлов навешивать свои параметры модуля: Код: Group { Возможно, ваш способ тоже работает, я не проверял. Для немультиплекс правил не вижу причин почему бы не работало (кроме очевидной - никто не реализовал). Для мультиплекс будут проблемы, да Кстати, правила которые мультиплекс - они мультиплекс потому что?... Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: kuzulis от Декабрь 17, 2018, 15:03 Ок, добавь туда на кодревью плз. свои идейки/комменты (я знаю, ты могеш. :) ). Пусть Кристиан отпишется по ним тоже.
Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: kuzulis от Декабрь 17, 2018, 19:35 Ага, спс.
Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: Авварон от Февраль 10, 2019, 17:03 А можешь добавить документацию по IAR пробе?
Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: kuzulis от Февраль 10, 2019, 18:52 а, ты имеешь ввиду, по аналогии с твоими коммитами?
добавил Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: Авварон от Февраль 15, 2019, 19:08 Ну ты и разошелся=)
Оффтоп, а Креатор это всё поддерживает? Во-первых, со стороны qmake, во-вторых, со стороны qbs? clang-cl для qmake появился вот только в последней версии... Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: kuzulis от Февраль 20, 2019, 12:32 > Оффтоп, а Креатор это всё поддерживает?
Что именно поддерживает? Если ты имеешь ввиду создание QBS проекта в QtC с использованием тулчейна из IAR, KEIL - то да. Ты можешь его создать и скомпилять.. Но вот с отладкой с использованием "родных" дебаггеров от IAR, KEIL - тут, да, для QtC нужно еще писать плагины... :) Но по идее, для ARM архитектуры (там где выходной формат файлов ELF и юзаются всякие DWARF и прочие) можно попробовать даже для проектов от IAR/KEIL подцепить GDB... Х.З. Может оно и проканает.. надо пробовать. ЗЫ: Хотя все эти GDB "сливают" вендорным отладчикам от IAR/KEIL. Вот кстати именно для этого (в основном) я хочу запилить генераторы проектов для IAR/KEIL. и юзать отладку там. (т.к. чтобы написать плагин для QtC который юзает IAR-овский C-Spy Debugger я х.з. скок времени нужно, т.к. особо не видел нормальной документации по этому дебаггеру, одни рекламные гайды). > Во-первых, со стороны qmake, во-вторых, со стороны qbs? QMake - нет, QBS теперь - да. :) ЗЫ: Просто появилось немного своб времени на работе и я от нечего делать пописываю.. :) Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: Авварон от Февраль 20, 2019, 14:53 Я вот что имел ввиду - вот я выбираю тулчейн в Среаторе и дальше он генерит верный профиль? Или надо ручками подхачить настройки? Из текста к коммиту я понял второе=)
Мне еще предстоит разбираться с clang-cl в Среаторе - в последней версии прикрутили автодетект к qmake, теперь им можно компилять "искаропки", а вот для интеграции с qbs пока нет, ему сносит крышу когда выбираешь clang-cl. Вот я и инересуюсь опытом. Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: kuzulis от Февраль 20, 2019, 19:07 Цитировать Я вот что имел ввиду - вот я выбираю тулчейн в Среаторе и дальше он генерит верный профиль? Или надо ручками подхачить настройки? Из текста к коммиту я понял второе=) 1. Пока что в QtC выбирать нужно просто кастомный компилер (и указывать путь к нему). 2. Когда профиль создался, остается просто чуть-чуть прописать в QtC тип тулчейна в настройках QBS профиля. и все. ЗЫ: Если добавлять профиль не из криэйтора, а из qbs-setup-toolchain - то оно автоматом создаст корректный профиль и ничего хачить не надо. ЗЫ: Если ты имел ввиду именно наличие в QtC выбора компилеров типа IAR, KEIL и прочих, определения их ABI, то там такого нету еще (я не добавлял еще, надо плагин писать) :)). Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: kuzulis от Февраль 21, 2019, 17:49 По желаниям трудящихся, добавил поддержку новых компилеров в QtC:
* IAR EW: https://codereview.qt-project.org/#/c/254051/ * KEIL: https://codereview.qt-project.org/#/c/254067/ Даже как-то и самому полегчало :) Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: Авварон от Февраль 21, 2019, 18:27 ;D ;D :D
Код: return {a, o, so, f, w}; Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: kuzulis от Февраль 21, 2019, 19:56 Ой, да лан тебе придираться уже :)
Название: Re: [QBS] Хочу поддержку IAR тулчейна Отправлено: kuzulis от Апрель 18, 2019, 22:50 Итак:
1. В QBS 1.13 (который с QtC 4.9) уже есть поддержка IAR + KEIL для архитектур: ARM AVR, MCS51 (8051). 2. В QBS > 1.13 добавлена поддержка тулчейна SDCC. 3. В QtCreator > 4.9 также будут в baremetal плагине доступны тулчейны: IAR, KEIL, SDCC (т.е. можно создавать их ручками, а также QtC будет пытаться их автодетектить). UPD: В процессе еще и генератор проектов для IAR из QBS (генерятся проекты для ARM, AVR, MCS51), пока что в отдельной репе (https://github.com/denis-shienkov/qbs/tree/iar-gen/src/plugins/generator/iarew). Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Май 03, 2019, 15:48 Как я понимаю, сейчас идет работа над IAR? Или заглохло?
Хотелось бы понять, что имеет смысл прикручивать далее. Пока я занят мелкими багофиксами, но надо каких-то фич тоже добавить. 1. Поддержка clang на венде в дополнение к clang-cl? 2. Поддержка grpc, благо она один-в-один копипаста протобуф модуля? 3. Допилить генератор для XCode? 4. Ваша фича? Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Май 05, 2019, 10:03 Цитировать Как я понимаю, сейчас идет работа над IAR? Или заглохло? Если ты имеешь в виду генератор - то пока заглохло (нет времени). Цитировать 1. Поддержка clang на венде в дополнение к clang-cl? А почему нет? Цитировать 2. Поддержка grpc, благо она один-в-один копипаста протобуф модуля? Тут я не знаю, лично я никогда это не использовал и впервые слышу. Цитировать 3. Допилить генератор для XCode? А оно генерит нативный проект, или так же как и с генератором MSVC - всё через QBS билдится в итоге? Просто я к тому, что, например, пилимый мною генератор для IAR генерит именно нативные проекты (где не нужны всякие QBS-ы потом чтобы работать со сгенеренным проектом). По этому поводу я ранее писал в рассылку с тем, что "как по мне" - то есть смысл генерить только нативные проекты, т.к иначе вообще смысла я в генераторах не вижу (генерить QBS-ом проект, чтобы собирать опять его QBS-ом??? масло-масляное??) :) Цитировать 4. Ваша фича? ХЗ... можно ли запилить что-то подобное как в CMake - ExternalProject (или как оно там называется)? Или нет смысла, т.к это невозможно в принципе? Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Май 05, 2019, 13:35 А оно генерит нативный проект, или так же как и с генератором MSVC - всё через QBS билдится в итоге? К сожалению (или к счастью), собирает оно через qbs. Я тебе в рассылке отвечал по большому счету на примере Xcode генератора, ибо я туда лазил и пытался доделать. а про msvc генератор не знаю вообще ничего. В целом, ничего плохого в таком подходе нет, кроме того, что можно обломаться когда не получается эмулировать поведение "родной" системы сборки. Гораздо хуже, когда нет возможности объяснить IDE как собрать твой кастомный рул=) ХЗ... можно ли запилить что-то подобное как в CMake - ExternalProject (или как оно там называется)? Или нет смысла, т.к это невозможно в принципе? Кажется, вот это ближайший тикет (https://bugreports.qt.io/browse/QBS-282) Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Май 05, 2019, 21:16 Цитировать Гораздо хуже, когда нет возможности объяснить IDE как собрать твой кастомный рул=) Тут да, если есть такие рулы - то это проблемка для "нативной" генерилки. Но также для некоторых IDE есть бОльшая проблема, состоящая в невозможности интеграции туда "кастомных" правил для запуска каких-то левых тулин, типа QBS (т.е. где IDE прибиты гвоздями). В таком случае, думаю, что эти рулы должны игнорироваться... :( И создание проекта в QBS на совести самого разработчика, т.е. если он делает какие-то рулы то он ССЗБ.. Иначе, имхо, я не знаю как это разрулить. PS: Интересно, а как CMake генерит проекты? Оно же вроде генерит нативные проекты? Например, что сгенерит "cmake -G "Visual Studio 10""? (я просто не в теме) Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Май 05, 2019, 22:16 Тут да, если есть такие рулы - то это проблемка для "нативной" генерилки. Но также для некоторых IDE есть бОльшая проблема, состоящая в невозможности интеграции туда "кастомных" правил для запуска каких-то левых тулин, типа QBS (т.е. где IDE прибиты гвоздями). В таком случае, думаю, что эти рулы должны игнорироваться... :( С учетом того, что даже просто "скомпилить цпп" это жаваскриптовый рул, то ты выкинешь весь граф, кроме входа и выхода (сорцы и бинарь, соответственно) Но в теории можно попробовать хакнуть ИДЕ подсовывая ей qbs под видом компилятора - то есть Иде говорит "собери файл" а мы запускаем qbs и собираем весь граф для этого файла нужный, говорит "слинкуй бинарь", а мы запускаем qbs. Боюсь только что работать это будет оч медленно. И создание проекта в QBS на совести самого разработчика, т.е. если он делает какие-то рулы то он ССЗБ.. Иначе, имхо, я не знаю как это разрулить. PS: Интересно, а как CMake генерит проекты? Оно же вроде генерит нативные проекты? Например, что сгенерит "cmake -G "Visual Studio 10""? (я просто не в теме) Симейк генерит "нативные" проекты, да. Тупо "мейкфайл" для каждой поддерживаемой платформы в котором описывает как что собирать. Но когда я ковырял цмейк (а было это давно), всякие кастомные рулы делались вызовом симейка же который выполнял мой скрипт. Как такой кастомный таргет должен матчится в ИДЕ которая не умеет кастомные правила?) Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Май 05, 2019, 22:31 Цитировать Ты не можешь взять и выкинуть рул из графа Хм, если говорить в части IAR генератора, то я беру из QBS проекта список сорцов/хидеров библиотек, приложений и пр. (т.е. всех продуктов) + парсю флаги компилятора/линкера для каждого продукта, чтобы "заполнить" соответствующие страницы настроек нативного IAR проекта. И в принципе, это все. Никакие кастомные рулы я не парсю, т.к. нет смысла в них.. Цитировать подсовывая ей qbs под видом компилятора Ну, в случае IAR такое вроде как невозможно. Т.к. там нет возможности ни выбрать компилятор ни ничего другого... Цитировать Тупо "мейкфайл" для каждой поддерживаемой платформы в котором описывает как что собирать. Хмм.. именно мейкфайл? Для студии (к примеру)? Прикольно... Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Май 05, 2019, 23:03 Хм, если говорить в части IAR генератора, то я беру из QBS проекта список сорцов/хидеров библиотек, приложений и пр. (т.е. всех продуктов) + парсю флаги компилятора/линкера для каждого продукта, чтобы "заполнить" соответствующие страницы настроек нативного IAR проекта. И в принципе, это все. Никакие кастомные рулы я не парсю, т.к. нет смысла в них.. Ну, в случае IAR такое вроде как невозможно. Т.к. там нет возможности ни выбрать компилятор ни ничего другого... Хмм.. именно мейкфайл? Для студии (к примеру)? Прикольно... Мейкфайл в кавычках=) Любой файл проекта - это по сути мейкфайл который описывает правила сборки. Для студии будет солюшн. Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Июль 06, 2019, 21:22 Я там не задолбал на ревью ещё? ;D
Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Июль 06, 2019, 23:15 Не, погодка хреновенькая, мои все спят, а я с пивком сижу, мне хорошо.. :)))
ЗЫ: Это я наверно задолбал... :))) Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Июль 06, 2019, 23:22 Не, погодка хреновенькая, мои все спят, а я с пивком сижу, мне хорошо.. :))) ЗЫ: Это я наверно задолбал... :))) Нет, у меня всё также - погода не очень, пивко=) Что пьешь? :) У меня la chouffe Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Июль 07, 2019, 09:54 Ой, не, я предпочитаю свеженькие разливухи. Ты там наверное и не знаешь названия. А в принципе пофиг что пить :).
Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Июль 07, 2019, 17:16 А верно я понимаю, что эта штука сделана по аналогии с clang-db генератором и в итоге игнорит все кастомные рулы?
Типа чтобы полноценно юзать из ИДЕ надо сперва собрать (как и для clang-db)? Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Июль 07, 2019, 20:11 Цитировать верно я понимаю, что эта штука сделана по аналогии с clang-db генератором и в итоге игнорит все кастомные рулы? Я не знаю как там и что clang-db генерит. Но iarew генератор генерит готовый нативный проект для IAREW IDE. Естественно, что-то сложное он обломается генерить, т.к. в IAREW IDE вроде нет возможности запихнуть что-то особенное, как, к примеру в MSVC генераторе (где по сути генерится не нативный проект, а юзается тот-же QBS). Но тут нет возможности (вроде как) даже засунуть вызовы qbs, да и нет в этом особого смысла, т.к. мне, как ембеддед программисту нужно иметь нативный проект с возможностями выбора при открытии проекта в IAREW IDE опций компиляции, выбор MCU и прочее.. т.е. идея в том, чтобы сгенерить из QBS и забыть про QBS. :) Цитировать Типа чтобы полноценно юзать из ИДЕ надо сперва собрать (как и для clang-db)? Эмм... нераспарсил.. Генератор iarew генерит сразу готовый нативный воркспейс с под-проектами (как будто ты создавал эти проекты сразу из IAREW IDE). т.е. бери его и сразу открывай в IAREW IDE (по аналогии как CubeMX генерит проекты для STM32), от QBS там в итоге ничего не остается. :) Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Июль 07, 2019, 20:17 Ну, допустим я генерю плюсовый хедер, в котором находится номер ревизии, кастомным рулом.
Как ИДЕ узнает о его существовании? В случае clang-db никак - надо сперва собрать проект через qbs (и сгенерить все эти хедеры) и только потом можно полноценно юзать clang-db (например, натравить анализатор). Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Июль 07, 2019, 21:57 Цитировать Ну, допустим я генерю плюсовый хедер, в котором находится номер ревизии, кастомным рулом. Ну, в таком случае - ССЗБ :). Пока что там такие вот ограничения. Чудес не бывает, надо чем-то жертвовать (по крайней мере на данном этапе)... :) Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Ноябрь 13, 2019, 15:16 Я заметил, что qbs setup-toolchains --detect стал тормозить на венде (28 секунд). kuzulis, не замечал? Может это связано с изменениями с баре метал?
Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Ноябрь 13, 2019, 21:22 Не, 6-7 секунд (Qbs 1.14.1)
Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Ноябрь 13, 2019, 23:51 Ну 6 секунд тоже дофига, нет?=)
Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Ноябрь 14, 2019, 16:39 ХЗ, но там же дохрена надо по реестру шляться и пр. Я в тебя верю, ты сможешь это победить! ;)
Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Ноябрь 14, 2019, 18:19 Я профильнул, тормозит спавн процессов на моей машине как то: вызов vswhere, вызов cl.exe (чтобы получить его версию). Можно немножко ускорить путем кеширования инфы при вызове clang-cl probe (так как мы уже делали примерно те же вызовы когда сетапили msvc), но большого выигрыша это не даст. Хотя процентов 10 тоже бонус=).
Еще тормозят регэкспы в gccProbe (ноги растут из buildCompilerNameFilters) - это еще процентов 10. Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Ноябрь 14, 2019, 19:31 Цитировать buildCompilerNameFilters Этот код я копипастил из QtC. Цитировать регэкспы в gccProbe Согласен, по-хорошему там все надо переделывать, да в автотесты добавить, но уж не оч хочется копаться там. ЗЫ: Я сейчас занят оч. (пытаюсь пришпандорить к QtC кейловский отладчик из uVision4, чтобы не только GDB && CDB были). :) UPD: У меня вот такой результат на винде (через Power Shell): QBS 1.14.1 (релиз, из установлнного QtC) Цитировать PS C:\Qt-meta\Tools\QtCreator\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect} Days : 0 Hours : 0 Minutes : 0 Seconds : 4 Milliseconds : 579 Ticks : 45792279 TotalDays : 5,30003229166667E-05 TotalHours : 0,00127200775 TotalMinutes : 0,076320465 TotalSeconds : 4,5792279 TotalMilliseconds : 4579,2279 QBS 1.16.0 (отладка, из мастер ветки) Цитировать PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect} Days : 0 Hours : 0 Minutes : 0 Seconds : 4 Milliseconds : 963 Ticks : 49639633 TotalDays : 5,74532789351852E-05 TotalHours : 0,00137887869444444 TotalMinutes : 0,0827327216666667 TotalSeconds : 4,9639633 TotalMilliseconds : 4963,9633 Больше всего времени тратится на MSVC пробу (я закомментировал все пробы кроме нее): Цитировать PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect} Days : 0 Hours : 0 Minutes : 0 Seconds : 4 Milliseconds : 323 Ticks : 43230334 TotalDays : 5,00351087962963E-05 TotalHours : 0,00120084261111111 TotalMinutes : 0,0720505566666667 TotalSeconds : 4,3230334 TotalMilliseconds : 4323,0334 Если оставить только Clang-CL, то: Цитировать PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect} Could not detect any toolchains. No profile created. Days : 0 Hours : 0 Minutes : 0 Seconds : 0 Milliseconds : 31 Ticks : 310493 TotalDays : 3,59366898148148E-07 TotalHours : 8,62480555555556E-06 TotalMinutes : 0,000517488333333333 TotalSeconds : 0,0310493 TotalMilliseconds : 31,0493 Если только GCC: Цитировать PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect} Days : 0 Hours : 0 Minutes : 0 Seconds : 0 Milliseconds : 356 Ticks : 3562163 TotalDays : 4,12287384259259E-06 TotalHours : 9,89489722222222E-05 TotalMinutes : 0,00593693833333333 TotalSeconds : 0,3562163 TotalMilliseconds : 356,2163 Если только Clang: Цитировать PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect} Could not detect any toolchains. No profile created. Days : 0 Hours : 0 Minutes : 0 Seconds : 0 Milliseconds : 303 Ticks : 3038970 TotalDays : 3,51732638888889E-06 TotalHours : 8,44158333333333E-05 TotalMinutes : 0,00506495 TotalSeconds : 0,303897 TotalMilliseconds : 303,897 Если только IAR EW: Цитировать PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect} Days : 0 Hours : 0 Minutes : 0 Seconds : 0 Milliseconds : 47 Ticks : 475093 TotalDays : 5,49876157407407E-07 TotalHours : 1,31970277777778E-05 TotalMinutes : 0,000791821666666667 TotalSeconds : 0,0475093 TotalMilliseconds : 47,5093 Если только KEIL: Цитировать PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect} Days : 0 Hours : 0 Minutes : 0 Seconds : 0 Milliseconds : 41 Ticks : 413757 TotalDays : 4,78885416666667E-07 TotalHours : 1,149325E-05 TotalMinutes : 0,000689595 TotalSeconds : 0,0413757 TotalMilliseconds : 41,3757 Если только SDCC: Цитировать PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Measure-Command {.\qbs-setup-toolchains.exe --detect} Could not detect any toolchains. No profile created. Days : 0 Hours : 0 Minutes : 0 Seconds : 0 Milliseconds : 114 Ticks : 1147311 TotalDays : 1,32790625E-06 TotalHours : 3,186975E-05 TotalMinutes : 0,001912185 TotalSeconds : 0,1147311 TotalMilliseconds : 114,7311 Возможно, что там еще разница по времени зависит от кол-ва обнаруженых тулчейнов: Цитировать PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> .\qbs-setup-toolchains.exe --detect Detecting MSVC toolchains... MSVC 2017 (x64) detected in C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64 MSVC 2017 (x64_x86) detected in C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x86 MSVC 2017 (x86_x64) detected in C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x64 MSVC 2017 (x86) detected in C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86 Detecting build environment... Setting up profile 'MSVC2017-x64'. Setting up profile 'MSVC2017-x64_x86'. Setting up profile 'MSVC2017-x86_x64'. Setting up profile 'MSVC2017-x86'. Trying to detect clang-cl... clang-cl was not found. Trying to detect gcc... Profile 'rl78-elf-gcc-4_9_2_201902-GNURL78' created for 'C:/GCC/GCC for Renesas RL78 4.9.2.201902-GNURL78-ELF/rl78-elf/rl78-elf/bin/rl78-elf-gcc-4.9.2.201902-GNURL78.exe'. Profile 'xc32-gcc' created for 'C:/microchip/xc32/v2.20/bin/xc32-gcc.exe'. Trying to detect clang... No clang toolchains found. Trying to detect IAR toolchains... Profile 'iar-10_10_1-mcs51' created for 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0/8051/bin/icc8051.exe'. Trying to detect KEIL toolchains... Profile 'keil-9_53_0-mcs51' created for 'C:/Keil_v5/C51/BIN/c51.exe'. Trying to detect SDCC toolchains... Profile 'sdcc-3_9_0-mcs51' created for 'C:/Program Files/SDCC/bin/sdcc.exe'. Profile 'sdcc-3_9_0-stm8' created for 'C:/Program Files/SDCC/bin/sdcc.exe'. PS E:\git\ng\git\123\qbs-git\build-qbs-Desktop_Qt_5_13_1_MSVC2017_32bit-Debug\bin> Например, для SDCC, возможно надо время делить на два. Для GCC наверно тоже. Хотя не уверен, надо проверять - да лень. Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Ноябрь 17, 2019, 17:28 ага, интересно, похоже это мой лэптоп тормозит из-за секурити говна установленного
Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Декабрь 04, 2019, 19:44 ага, интересно, похоже это мой лэптоп тормозит из-за секурити говна установленного Как оказалось нет, на макбуке такие же тормоза >:( Вопрос, а вот тут (https://github.com/qbs/qbs/blob/master/src/lib/corelib/generators/generatorutils.h#L43) на значения энумов что-то завязано? Я думаю заменить значения на флаги, а std::set<Architecture> на QFlags<Architecture>. 32 архитектуры хватит всем (с) Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Декабрь 04, 2019, 20:46 Цитировать Вопрос, а вот тут на значения энумов что-то завязано? Вроде нет, поэтому они и сделаны енум классом. Цитировать 32 архитектуры хватит всем в принципе, наверно да, хватит Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Декабрь 22, 2019, 21:04 Короче я запилил что хотел, но, кажется, частично зря.
Я чем больше смотрю на этот код (https://github.com/qbs/qbs/blob/master/src/plugins/generator/iarew/iarewversioninfo.cpp#L65), тем меньше понимаю Код: int IarewVersionInfo::marketingVersion() const Вот тут мы вызываем VersionInfo::marketingVersion() (https://github.com/qbs/qbs/blob/master/src/lib/corelib/generators/generatorversioninfo.cpp#L72) которая тупо мажорная версия. А вот тут (https://github.com/qbs/qbs/blob/master/src/plugins/generator/iarew/iarewgeneratorplugin.cpp#L46) мы перебиравшем все известные версии и создаем генератор. Код: static void QbsIarewGeneratorPluginLoad() Внимание вопрос, как мы можем попасть в ветку "Unrecognized IAR EW version:" и если ответ никак то нафейхоа метод О(1) превращать в О(N). Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: kuzulis от Декабрь 22, 2019, 22:02 Цитировать Короче я запилил что хотел, но, кажется, частично зря. Где и что запилил? Цитировать Внимание вопрос, как мы можем попасть в ветку "Unrecognized IAR EW version:" Наверно, когда пользователь введет что-то типа: Цитировать qbs --generate -g iarew100500 ЗЫ: Я там попытался скопипастить реализацию из MSVC генератора, но что-то там сходу не срослось и решил оставить как есть.. Я сам до сих пор еще не понимаю как бы там получше сделать. Т.е. может быть, что маркетинговой версии будет мало (т.е. мажорной) в имени генератора, и возможно нужно еще будет использовать и минорную, типа: Цитировать qbs --generate -g iarew8.1 или как то так (возможно, что есть разница в структуре файлов проекта минорных IAR EW). В общем, я не я и хата не моя. :) Название: Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна Отправлено: Авварон от Декабрь 22, 2019, 22:22 Где и что запилил? Вот тут пока https://github.com/ABBAPOH/qbs/tree/constexpr Но я не уверен, что хочу щаз добавлять gsl::span может можно проще сделать=) |