- Разработка графических приложений под Linux для Windows Программистов. С чего начать? (перевод)
- Разработка графических приложений под Linux для Windows Программистов.
- С чего начать?
- Начинайте с того что нравится
- Выбор инструментов
- Проприетарная помощь
- Мне нравится нативный вид
- wxWindows
- Итак. Какие виджеты я использую?
- Кросс-компиляция Qt5 под Linux для Win x32/x64/static/shared
- 0. Сценарий сборки
- 1. Предварительная подготовка
- 2. Установка среды кросс-компиляции MXE
Разработка графических приложений под Linux для Windows Программистов. С чего начать? (перевод)
Разработка графических приложений под Linux для Windows Программистов.
С чего начать?
Переходя с Windows на Linux вы начинате путаться в куче опций. QT или GTK+? Какой язык использовать: c/c++/java/perl/tcl/python/ruby или javascript? Должен ли я использовать коммерческие/проприетарные laypout/rad инструмента (QT или Kylix), либо opensource? А Mozilla? Я умею программировать в Visual Basic и Lotus Notes (Basic, Java, C / C + + API). С чего мне начать?
Начинайте с того что нравится
Я знал, что я люблю язык программирования Python, с его способностью сделать программирование «как можно более простым, но не простейшим» (Эйнштейн). Он позволяет программировать на высоком уровне и ваш разум освобождается для работы по другим вопросам. Поскольку структура кода является неотъемлемой частью языка я считаю, что такой код другим людям гораздо легче читать и понимать. Отсутствие необходимости компилировать экономит мне время на отладку и тестирование. Сбор мусора — это то, что я считать само собой разумеющимся. Так же я могу выбрать подходящий для меня стиль программирования, будь то процедурное, функциональное, объектно-ориентированное или смесь — за счет чего я могу выполнить работу более быстро и эффективно. Приложения могут быть заморожены — сделать для облегчения распространения. Наконец, «batteries included» характерное для Python библиотек способствует повторному использованию кода и скорости развития.
Тем не менее, язык программирования, в идеале не должно быть вашим главным критерием в отборе GUI Toolkit — так что я сделал обследование имеющихся инструментов.
Выбор инструментов
Я рассмотрел TK(2), GTK+(3), QT(4), wxWindows(5), MFC, Windows Forms (.NET), Swing (Java), и FOX(6) и пришел к следующим критериям оценки инструментов:
- Шаблонизация (Kylix, QT, GLADE)
- Интерфейс — Объектно-ориентированный язык или полу-OO
- Завершенность инструмента
- Количество и типы виджетов
- Качество виджетов/контролов
- Потребление ресурсов и Быстродействие
- Поддержка кроссплатформенности
- Лицензия
- Поддержка кросс-языковости
Оценка до 5 | TK | GTK+ | QT -Kylix | QT | wxWindows | MFC | Windows Forms | Swing | FOX |
Шаблонизация (Kylix, QT, GLADE) | 2 | 4 | 5 | 5 | 4 | 3 | 5 | 4 | 3 |
Интерфейс — Объектно-ориентированный или полу-OO | 2 | 2 | 5 | 5 | 5 | 3 | 5 | 5 | 5 |
Завершенность инструмента | 4 | 4 | 5 | 5 | 4 | 5 | 3 | 3 | 3 |
Количество и типы виджетов | 3 | 4 | 5 | 5 | 4 | 3 | 5 | 3 | ? |
Качество виджетов/контролов | 3 | 4 | 5 | 5 | 5 | 4 | 5 | 4 | ? |
Потребление ресурсов и Быстродействие | 4 | 5 | 5 | 5 | 5 | 5 | 5 | 2 | ? |
Поддержка кроссплатформенности | 5 | 5 | 4 | 4 | 5 | 1 | 1 | 2 | 5 |
Лицензия | 5 | 5 | 1 | 1 | 5 | 4 | 2 | 2 | 5 |
Поддержка кросс-языковости | 5 | 5 | 1 | 4 | 5 | 2 | 4 | 1 | ? |
Нативный вид (часто важно для пользователя) | 1 | 3 | 5 | 5 | 5 | 5 | 5 | 1 | 5 |
Масштабность сообщества разработчиков | 3 | 4 | 4 | 4 | 4 | 5 | 5 | 4 | 3 |
Документация | 4 | 3 | 4 | 5 | 4 | 2 | 3 | 4 | 2 |
Легкость изучения | 4 | 3 | 4 | 4 | 4 | 1 | 3 | 2 | ? |
Весомый итог | 55 | 61 | 60 | 64 | 69 | 48 | 54 | 41 | |
Невесомый итог | 45 | 51 | 54 | 58 | 59 | 43 | 51 | 37 |
Проприетарная помощь
Три или четыре варианта попираются на вершину. QT и Kylix оба предлагают великолепные, довольно простые в использовании RAD среды. Тем не менее, я использовал FoxPro и Lotus Notes — и я очень устала от собственных решений (оба поддерживают Unix, но я забросил это дело). Закрытость инструмента может очень негативно сказаться на вашем приложении в будущем. Компании создавшие ваше ПО могут принять решение об изменении направления и больше не вкладывать средства в ваш инструмент — и ваше приложение или устаревает, или умирает. Если вы разрабатываете приложение с открытым кодом на QT — вы ограничены в соответствии с лицензией на открытый код. Дорогое лицензии могут быть необходимы для портирования кода на Mac или Windows. Некоторые компании и инструменты (Java & Notes) ограничивают ваше право на распространение кода без дополнительной оплаты лицензий.
Мне нравится нативный вид
GTK+ и TK довольно неуклюже работают под windows и я хотел бы чтобы то что я пишу выглядело замечательно как на windows так и на mac. Посмотрим правде в глаза — большинство пользователей привыкли к использованию родных виджетов и, как правило оценивают приложение, по внешнему виду. Если вы хотите придерживаться стиля Unix то платформа GTK + и PyGTK являются хорошим выбором.
Mozilla — XUL
Другой вариант, кажется интригующим. Им является XUL — XML код, который создает основу для GUI Mozilla.
Среди его преимуществ — кроссплатформенный набор виджетов и возможность установки через браузер (. XPI-файлы) или можно запускать прямо с сервера (на XULPlanet есть прекрасный учебник). Я обнаружил protozilla — который дает способом создания локальных сценариев CGI или с использованием IPC (pipe), — но он показался мне нестабильным. Я также обнаружил, что вы можете получить доступ к COM-объектам через интерфейс IDispatch. Код в настоящее время выключен и не является частью программы Mozilla. Кроме того,код очень сырой, и тщательно не протестирован.
из почтовой рассылки:
Нестабильность Mozilla как платформы для разработки заставила отложить её до лучших времен. Возможно, что все изменится в будущем.
wxWindows
wxWindows это открытый c++ инструмент который работает как тонкая прослойка между родными виджетами — GTK+, WIN32, Mac OS, Motif и т.п. У него имеется интерфейсы для c++, perl, python и ruby. Мне нравится идея набора виджетов, который представляет собой тонкую оболочку вокруг других — тем самым защищая вас от изменений и позволяющий вести кроссплатформенную разработку. Вначале были проблемы запуска WxPython под управлением Linux — Python — WxWindows, но Робин Данни улучшил установку для Linux — и теперь это доступно как обычная установка пакетом.
WxPython была создана Robin, который сделал инструмент, который помогает автоматизировать создание Python классов C или C + + API и WxPython — Python интерфейс для WxWindows. Существуют также интерфейсы для Perl & Ruby для тех, кто предпочитает эти языки. Еще одним преимуществом является возможность использования XML для программирования интерфейса (например, GTK +, QT, XUL). В теории это позволяет отделить графический вид программы от логики отображения. Также я бы хотел отметить, что очень быстро и легко можно создать графический интерфейс приложения. С другой стороны, хотя существует множество фрагментов и примеров кода, имеющихся пособий, большая часть документации, направлена на C + + программистов. Также замечу, что порт на Mac OS X не является полным.
В конце хочется спросить, «Что используют люди поумнее?»
Open Source Applications Foundation приняли решение об использовании WxPython через год раздумий
GNU Entreprise — используют WxPython в качестве основы для приложений клиент-сервер.
Многие другие организации используют WxWindows в той или иной форме
Итак. Какие виджеты я использую?
XRC:
Простой редактор xml widget
Boa:
IDE
Слышал только хорошее и даже немного с ним поигрался
Источник
Кросс-компиляция Qt5 под Linux для Win x32/x64/static/shared
Документирование получения системы кросс-компиляции под Linux для Windows x32/x64/static/shared и сборка последней на момент описания Qt 5.4.1 в лайт-версии (для указанных четырех целей). Для себя, глубоко-обожаемого, ну и для пользы обществу.
Многие разработчики приходят к выводу, что использование *nix (в частности Linux) более предпочтительно для разработки приложений, используя фрэймворк Qt. И тому есть причины. Qt изначально ориентирована на *nix инструментарий, типа autotool, make, perl… И второй момент, под никсами есть прекрасный инструмент — valgrind, под виндой порта пока его не видел. Ну и последняя причина: просто удобно иметь набор инструментария для создания приложений под различные целевые платформы — в одном месте.
0. Сценарий сборки
Все шаги делаем последовательно. Желательно не объединять все скрипты в последовательную сборку по причине необходимости промежуточного «человечного» контроля. Разные дистрибутивы Линуха, разные среды исполнения, наборы инструментариев… Простой алгоритм: сделал очередной шаг, убедился в отсутствии ошибок, пошел делать следующий. Итак, сам сценарий:
- 1. Предварительная подготовка
- 2. Установка среды кросс-компиляции MXE
- 3. Загрузка и настройка Qt 5.4.1
- 4. Сборка комплектов Qt 5.4.1 для четырех целей (см. сабж)
- 5. Прописка собранного в QtCreator
1. Предварительная подготовка
У вас установлен дистрибутив Линукса. Желательно все это делать на на продакшен-компе (не на живом Линуксе), а установленном в виртуальную машину. Я например, пользуюсь VMWare, но это дело вкуса. Выбор дистрибутива Линукса — так же дело вкуса. Лично я предпочитаю Gentoo Linux, собственно под ним всю эту кухню и настраиваю. Если есть сложности в настройке, у меня есть небольшая статейка по этому вопросу: «Установка и настройка Linux Gentoo под VMWare».
Итак, у вас есть настроенный Линукс и вы работаете не под рутом! Для дальнейшей работы вам нужно проверить присутствие следующих установленных пакетов, или доустановить:
Вся дальнейшая установка будет производиться в каталог $HOME/dev. Если у вас таковой присутствует — либо переименовываете его, либо внимательно правите скрипты, которые будут приведены далее. Для всех манипуляций со скачиваемыми внешними файлами/скриптами/библиотеками будет использован каталог $HOME/setup. Все замечания выше относительно $HOME/dev — в силе и к этому каталогу.
2. Установка среды кросс-компиляции MXE
Предварительное замечание об MXE. Это отличнейшая система сборки тулчейнов для кросс-компиляции. Но есть одно «но». В данный момент не существует стабильной ветки. Авторы до поры до времени вели две ветки в своем git-репозитарии — стабильную и «разработческую». Сейчас ветки объединены. Разработка идет ну очень активно — изменения сбрасываются чуть ли не раз 1-3 дня. А это чревато тем, что «то работает сборка, то не работает». Некоторые важные для меня библиотеки, в частности клиентская часть PostgreSQL, собираются без ошибок, но в нерабочем состоянии. Потратил неделю не исследование явных косяков. Исправляем эти «недочеты». Итак:
Должны получить в каталоге $HOME/setup следующий набор скриптов:
Источник