LINUX.ORG.RU

Легкий GUI

 


0

1

Есть бэкэнд написанный на с++. Нужно сделать к нему легкий гуевый фронтенд (одно окошко пару батонов/лейб/прогрессбар). Нужно собрать это все в один бинарь чтобы работало на всех(в разумных пределах) *nix платформах. Язык в принципе не важен(при условии наличия связки с бэкэндом), главное чтоб был один исполняемый файл небольшого размера.

static Qt - брутально сжатый upx-ом стрипнутый бинарь размером 6м, да еще и не везде работает (что-то из либ ему не хватает).

Смотрел FLTK - выглядит слишком трушно, хотелось бы не выделятся сильно от окружающей среды.

Что посоветуют?)


wxWidgets предназначен для статической компиляции, но не знаю как с поддержанием ABI у низкоуровневых библиотек, на которые эта либа опираются. GTK есть везде, но ABI в нём опять же могут и поломать, и, насколько понимаю, пользуются возможностью регулярно. А вот в случае динамической линковки с Qt может выгореть - они единственные, кто реально сохраняет ABI годами, в Qt4 есть даже совместимость с Qt3.

Но Qt установлен не везде, даже не помню, идёт ли он с дефолтом убунты или потом грузится из реп.

quiet_readonly ★★★★ ()

tclkit 1.4 мб. Одним файлом. Умеет запихивать в себя дополнительные so-шки. В принципе Tk должен быть везде.

gdialog, gtk-server как возможность.

Fox теоритически.

antares0 ★★★ ()
Ответ на: комментарий от quiet_readonly

Когда с убунтой поставлялся унити2д там были qt, сейчес его удалили из образа за не нужностью

anonymous ()

fox-toolkit?. Работал с одной прогой, которая его использует.

gag ★★★★★ ()

use Motif, bro!

Еще можно в сторону Tk посмотреть. А для связки с некошерными плюсами сделать файл-обертку.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от unfo

Qt статически уже в принципе нельзя - только в коммерческой версии.

Чего это вдруг сразу нельзя? Может у ТС вообще программа под GPL, какие тогда проблемы?

kamre ★★★ ()
Ответ на: комментарий от quiet_readonly

А вот в случае динамической линковки с Qt может выгореть - они единственные, кто реально сохраняет ABI годами, в Qt4 есть даже совместимость с Qt3.

Совместимость ABI между Qt3 и Qt4 быть не может в принципе, поскольку имена классов те же.

По теме. При сборке статической Qt вырежите из неё по максимуму всё лишнее с помощью qconfig (tools/qconfig). Стандартный набор компонентов лежит здесь: src/corelib/global/qfeatures.txt. Предопределённые конфиги найдёте в той же директории, например, qconfig-minimal.h. Просто замените сгенерированным заголовочником стандартный qconfig.h перед началом сборки.

Dendy ★★★★★ ()

Чем обычный GTK+ не устраивает? Вполне себе быстро и легко. Из С++ можно посмотреть на wxWidgets(wxX11), U++, FOX toolkit

xterro ★★★★★ ()

IUP - http://www.tecgraf.puc-rio.br/iup/

Легкая библиотека, правда на C. По сути является оберткой для Gtk+2/3, Motif и Win32. Ощень рикамендую. При желании можно прикрутить скриптинг на Луа, есть готовая обертка.

rikardoac ()

Tcl/Tk есть везде. Тебе точно нужен один бинарник?

psikh ()

чтобы работало на всех(в разумных пределах) *nix платформах

xcb уже советовали? или мотиф какой-нибудь, он теперь опенсорс. выглядеть конечно будет вырвиглазно, но размер маленький получится. я гарантирую это.

nanoolinux ★★★★ ()
Ответ на: комментарий от quiet_readonly

GTK есть везде, но ABI в нём опять же могут и поломать, и, насколько понимаю, пользуются возможностью регулярно

пруф или не было.

Qt может выгореть - они единственные, кто реально сохраняет ABI годами

у qt срок поддержки примерно в 2-3 раза короче чем у gtk. в рамках одной версии может и не ломают ABI (как и в gtk), но ты попробуй найди хоть один комп с qt4 через пару лет.

waker ★★★★★ ()
Ответ на: комментарий от quiet_readonly

В общем можно попробовать GTK через dlopen открывать, как-то так.

в этом нет _совсем_ никакой необходимости.

достаточно собирать свою программу с минимально нужной версией gtk, будет работать на всех более старших.

waker ★★★★★ ()

Нужно собрать это все в один бинарь чтобы работало на всех(в разумных пределах) *nix платформах.
Смотрел FLTK - выглядит слишком трушно, хотелось бы не выделятся сильно от окружающей среды.

насколько долго программа будет актуальной? если больше 2-3 лет — сейчас лучше всего использовать gtk3. линковать динамически. это я пишу в свете того, что скоро может прилететь wayland, и gtk3 его будет поддерживать автоматически. иначе посоветовал бы gtk2, для поддержки старых дистров, типа debian lenny, centos.

если линковать статик — при переходе на wayland отвалится наверняка.

чтобы «не выделялось» - кроме gtk и qt вариантов нет.

waker ★★★★★ ()
Ответ на: комментарий от quiet_readonly

GTK ... ABI в нём опять же могут и поломать ... пользуются возможностью регулярно

Qt ... они единственные, кто реально сохраняет ABI годами

А так ты просто тролль. Иначе никак не обьяснить отрицание двух широкоизвестных вещей

vertexua ★★★★★ ()
Ответ на: комментарий от vertexua

отрицание двух широкоизвестных вещей

+1

waker ★★★★★ ()

p.s. для максимальной совместимости, вот для этого требования:

чтобы работало на всех(в разумных пределах) *nix платформах

лучше всего поддерживать gtk2+gtk3, я так в deadbeef сделал.

waker ★★★★★ ()
Ответ на: комментарий от quiet_readonly

GTK есть везде, но ABI в нём опять же могут и поломать

Не пори чушь.

anonymous ()
Ответ на: комментарий от psikh

Кроме GTK+ у него как минимум есть Motif и голый X11 backend-ы.

ага, и многие другие. а теперь прочитай запросы ОПа, и подумай, почему wxwidgets в них не вписывается.

waker ★★★★★ ()
Ответ на: комментарий от psikh

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

waker ★★★★★ ()
Ответ на: комментарий от waker

То есть признаем, что это не «всего лишь обертка над GTK+»?

И я не вижу, как wxWidgets c X11-backend-ом, да еще и статически линкуемый, не вписывается в требования. Лицензия там вполне добрая.

psikh ()
Ответ на: комментарий от psikh

И я не вижу, как wxWidgets c X11-backend-ом, да еще и статически линкуемый, не вписывается в требования.

1. > хотелось бы не выделятся сильно от окружающей среды.

что как бы подразумевает использование тем gtk или qt.

2. > чтобы работало на всех(в разумных пределах) *nix платформах

скоро придет wayland, и покажет всем приложениям, завязанным на x11 и xlib кузькину мать (но в ближайший год-два это, вероятно, не проблема)

и, наконец,

3. > чтоб был один исполняемый файл небольшого размера.

надо еще доказать, что файл будет меньше, чем при использовании динамического gtk (а gtk — это, пожалуй, самый распространенный тулкит, и есть везде где есть иксы — поэтому его статически линковать нет необходимости).

waker ★★★★★ ()
Ответ на: комментарий от psikh

Откуда столько оптимизма? Gtk везде, где есть X11?

ты в чем-то [раз]убедить меня пытаешься, или просто поболтать зашел?

waker ★★★★★ ()
Ответ на: комментарий от psikh

ОК. только убеждай не меня, а ОПа :)

мне не нужно.

waker ★★★★★ ()

Нужно сделать к нему легкий гуевый фронтенд

Gtk/Qt/FOX/Tk - абсолютно без разницы.
Ибо в твоей проге будут только вызовы системных библиотек. Выбор библиотеки не повлияет на размер проги.

Используй тот гуй, который тебе удобнее, и к-й гарантировано будет у юзеров.

Novator ★★★★ ()

Для окошка/пары батонов/лейб/прогрессбара Xlib хватит. Правда придётся всё это вручную отрисовывать. Как вариант - слямзи битмапы из любимой gtk/Qt/wtf темы. Ручками поработать придётся конечно. Тебе решать, стоит ли оно того.

auto12884835 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.