реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Препроцессор QT/moc, использлвание в НЕ Qt программах
nanorobot
сообщение Jul 2 2015, 07:20
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Поннравился механизм signal/slot в Qt. Его реализация обеспечивается препроцессором moc. То есть теоретически есть возможность его использования вне Qt. Реализовать соответствующий алгоритм в makefile и вперед. Лично моей квалификации на это пока не хватит. Мож делал кто?
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jul 2 2015, 07:31
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Ну вообще то там две части - с одной стороны препроцессор (который обеспечивает удобный синтаксис объявления сигналов/слотов) а с другой - поддержка в библиотеке (которая обеспечивает работу всего этого во время выполнения)

Просто взять и выдрать из Qt сигналы/слоты врядли получится - они потянут еще какие-то части QtCore. Если процессор "жирный", то можно просто взять Qt и скомпилировать его часть (эту самую QtCore) для данного процессора.

Или можно посмотреть на буст, там есть нечто похожее - signals2, который (насколько я помню) компиляции не требует.
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Jul 2 2015, 07:55
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(Непомнящий Евгений @ Jul 2 2015, 12:31) *
Просто взять и выдрать из Qt сигналы/слоты врядли получится - они потянут еще какие-то части QtCore. Если процессор "жирный", то можно просто взять Qt и скомпилировать его часть (эту самую QtCore) для данного процессора.


Правильно ли я понял, что можно собрать Qt, который будет генерировать код, не привязанный к ОС , например, линуксу?

Напрямую из Вашего поста это не следует, но если нет, тогда к чему эти манипуляции? Просто берем и пишем для линуха

PS не знаю процента жирности LPC435xx

Сообщение отредактировал nanorobot - Jul 2 2015, 08:01
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jul 2 2015, 10:17
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(nanorobot @ Jul 2 2015, 10:55) *
Правильно ли я понял, что можно собрать Qt, который будет генерировать код, не привязанный к ОС , например, линуксу?
Напрямую из Вашего поста это не следует, но если нет, тогда к чему эти манипуляции? Просто берем и пишем для линуха

Qt большая. Сигналы и слоты относятся к QtCore, которую, по идее, можно собрать и без ОС (но скорее всего весьма непросто sm.gif )

Стоит ли овчинка выделки только ради сигналов/слотов - хз, мне кажется много проще взять 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 Мб. Утоптать ее наверное можно, вот только какая выгода?
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Jul 2 2015, 11:23
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(Непомнящий Евгений @ Jul 2 2015, 15:17) *
200 МГц, 1 Мб ПЗУ и 136 кб ОЗУ - ну хз, сильно зависит, сколько сожрет прикладной код. Моя QtCore.dll весит 2,1 Мб. Утоптать ее наверное можно, вот только какая выгода?

Параметры процессора мне известны. Неизвестна "жирность" по отношению к гипотетическому КуТэ без линуха...

Сообщение отредактировал nanorobot - Jul 2 2015, 14:29
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jul 2 2015, 11:29
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(nanorobot @ Jul 2 2015, 14:23) *
Параметры процессора мне известны. Неизвестна "жирнрсть" по отношению к гипотетическому КуТэ без линуха...

ИМХО, для Qt тут ресурсов маловато. Хотя возможно я ошибаюсь. Экспериментируйте sm.gif
Go to the top of the page
 
+Quote Post
den_po
сообщение Jul 3 2015, 07:51
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Цитата(Непомнящий Евгений @ Jul 2 2015, 12:31) *
Или можно посмотреть на буст, там есть нечто похожее - signals2, который (насколько я помню) компиляции не требует.

Или можно посмотреть на реализации, использующие FastDelegate, например https://github.com/pbhogan/Signals
Go to the top of the page
 
+Quote Post
Mihey_K
сообщение Jul 3 2015, 11:57
Сообщение #8


Частый гость
**

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



Без ОС Qt вам не собрать, потому что это фреймворк над системными интерфейсами. Как вариант можно портировать под uClinux 4ую версию Qt, но потребуется немало времени для подбора оптимальных настроек и поиска патчей под Thumb2. На lpc1788 где-то месяц потратил на порт.


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jul 3 2015, 12:11
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Mihey_K @ Jul 3 2015, 14:57) *
Без ОС Qt вам не собрать, потому что это фреймворк над системными интерфейсами.

Думаю собрать, но напильником придется поработать, отключая лишнее. Собственно многие вещи там к системе никак не относятся - те же сигналы/слоты к примеру
Go to the top of the page
 
+Quote Post
Mihey_K
сообщение Jul 3 2015, 12:25
Сообщение #10


Частый гость
**

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



Можно многое напильником сделать, но оправдает ли задачу потраченное время... К слову скажу, что без поддержки тредов Qt4 и тем более 5 не собрать. ОС хотя б это предлагает.


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jul 3 2015, 12:39
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Mihey_K @ Jul 3 2015, 15:25) *
Можно многое напильником сделать, но оправдает ли задачу потраченное время...

Я бы не стал, но в принципе то sm.gif Собственно для проца ТС-а все это вообще непонятно зачем надо.

Цитата
К слову скажу, что без поддержки тредов Qt4 и тем более 5 не собрать. ОС хотя б это предлагает.

Думаю зависит от степени владения напильником. По крайней мере qtCore наверное собрать можно и что-то даже работать будет. Самый простой вариант - просто заменить все связанное с потоками на заглушки. Или какой-то базовый функционал строго завязан на наличие фоновых потоков?
Go to the top of the page
 
+Quote Post
Mihey_K
сообщение Jul 3 2015, 14:23
Сообщение #12


Частый гость
**

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



Как минимум придется пилить атомарный доступ, спинлоки. Вопрос уже поднимался. Особенно сильно на потоки завязаны QtWidgets.


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post
Slash
сообщение Jul 6 2015, 21:08
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Mihey_K
сообщение Jul 6 2015, 22:29
Сообщение #14


Частый гость
**

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



Механизм сигналов/слотов можно в некоторой степени заменить мьютексами средствами RTOS.


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Jul 9 2015, 15:15
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(Mihey_K @ Jul 7 2015, 03:29) *
Механизм сигналов/слотов можно в некоторой степени заменить мьютексами средствами RTOS.



Вероятно Вы хотели сказать - семафорами?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 07:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016