|
|
  |
Препроцессор QT/moc, использлвание в НЕ Qt программах |
|
|
|
Jul 2 2015, 07:31
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Ну вообще то там две части - с одной стороны препроцессор (который обеспечивает удобный синтаксис объявления сигналов/слотов) а с другой - поддержка в библиотеке (которая обеспечивает работу всего этого во время выполнения) Просто взять и выдрать из Qt сигналы/слоты врядли получится - они потянут еще какие-то части QtCore. Если процессор "жирный", то можно просто взять Qt и скомпилировать его часть (эту самую QtCore) для данного процессора. Или можно посмотреть на буст, там есть нечто похожее - signals2, который (насколько я помню) компиляции не требует.
|
|
|
|
|
Jul 2 2015, 07:55
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(Непомнящий Евгений @ Jul 2 2015, 12:31)  Просто взять и выдрать из Qt сигналы/слоты врядли получится - они потянут еще какие-то части QtCore. Если процессор "жирный", то можно просто взять Qt и скомпилировать его часть (эту самую QtCore) для данного процессора. Правильно ли я понял, что можно собрать Qt, который будет генерировать код, не привязанный к ОС , например, линуксу? Напрямую из Вашего поста это не следует, но если нет, тогда к чему эти манипуляции? Просто берем и пишем для линуха PS не знаю процента жирности LPC435xx
Сообщение отредактировал nanorobot - Jul 2 2015, 08:01
|
|
|
|
|
Jul 2 2015, 10:17
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(nanorobot @ Jul 2 2015, 10:55)  Правильно ли я понял, что можно собрать Qt, который будет генерировать код, не привязанный к ОС , например, линуксу? Напрямую из Вашего поста это не следует, но если нет, тогда к чему эти манипуляции? Просто берем и пишем для линуха Qt большая. Сигналы и слоты относятся к QtCore, которую, по идее, можно собрать и без ОС (но скорее всего весьма непросто  ) Стоит ли овчинка выделки только ради сигналов/слотов - хз, мне кажется много проще взять std::function. Как-то так Код struct MyCoolObject { std::vector<std::function<void(int a)> > subscribers; void fireEvent() { for (auto &s: subscribers) s(42); } } obj;
obj.subscribers.push_back([](int a) { std::cout<< a;});
obj.fireEvent(); Цитата PS не знаю процента жирности LPC435xx 200 МГц, 1 Мб ПЗУ и 136 кб ОЗУ - ну хз, сильно зависит, сколько сожрет прикладной код. Моя QtCore.dll весит 2,1 Мб. Утоптать ее наверное можно, вот только какая выгода?
|
|
|
|
|
Jul 2 2015, 11:23
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(Непомнящий Евгений @ Jul 2 2015, 15:17)  200 МГц, 1 Мб ПЗУ и 136 кб ОЗУ - ну хз, сильно зависит, сколько сожрет прикладной код. Моя QtCore.dll весит 2,1 Мб. Утоптать ее наверное можно, вот только какая выгода? Параметры процессора мне известны. Неизвестна "жирность" по отношению к гипотетическому КуТэ без линуха...
Сообщение отредактировал nanorobot - Jul 2 2015, 14:29
|
|
|
|
|
Jul 3 2015, 07:51
|
Частый гость
 
Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315

|
Цитата(Непомнящий Евгений @ Jul 2 2015, 12:31)  Или можно посмотреть на буст, там есть нечто похожее - signals2, который (насколько я помню) компиляции не требует. Или можно посмотреть на реализации, использующие FastDelegate, например https://github.com/pbhogan/Signals
|
|
|
|
|
Jul 3 2015, 11:57
|

Частый гость
 
Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747

|
Без ОС Qt вам не собрать, потому что это фреймворк над системными интерфейсами. Как вариант можно портировать под uClinux 4ую версию Qt, но потребуется немало времени для подбора оптимальных настроек и поиска патчей под Thumb2. На lpc1788 где-то месяц потратил на порт.
--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
|
|
|
|
|
Jul 3 2015, 12:39
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(Mihey_K @ Jul 3 2015, 15:25)  Можно многое напильником сделать, но оправдает ли задачу потраченное время... Я бы не стал, но в принципе то  Собственно для проца ТС-а все это вообще непонятно зачем надо. Цитата К слову скажу, что без поддержки тредов Qt4 и тем более 5 не собрать. ОС хотя б это предлагает. Думаю зависит от степени владения напильником. По крайней мере qtCore наверное собрать можно и что-то даже работать будет. Самый простой вариант - просто заменить все связанное с потоками на заглушки. Или какой-то базовый функционал строго завязан на наличие фоновых потоков?
|
|
|
|
|
Jul 3 2015, 14:23
|

Частый гость
 
Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747

|
Как минимум придется пилить атомарный доступ, спинлоки. Вопрос уже поднимался. Особенно сильно на потоки завязаны QtWidgets.
--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
|
|
|
|
|
Jul 6 2015, 21:08
|
Местный
  
Группа: Участник
Сообщений: 202
Регистрация: 10-04-05
Из: Санкт-Петербург
Пользователь №: 4 011

|
Вроде бы используя ОС EmBox http://se.math.spbu.ru/SE/embox можно запускать на МК приложения, написанные на Qt. Еще вариант, с помощью компилятора Clang можно заменить moc http://woboq.com/blog/moc-with-clang.html Сколько труда нужно вложить, чтобы для МК получить сигналы/слоты - даже не представляю ( в этом варианте, без сторонних библиотек).
Сообщение отредактировал Slash - Jul 6 2015, 21:09
|
|
|
|
|
Jul 9 2015, 15:15
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(Mihey_K @ Jul 7 2015, 03:29)  Механизм сигналов/слотов можно в некоторой степени заменить мьютексами средствами RTOS. Вероятно Вы хотели сказать - семафорами?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|