Разработка интерфейса мультиплатформенных приложений
Опубликован от Alexey Bogdanov вход Разработка · 5 ноябрь 2019
Tags: разработка, си, GUI, интерфейс, мультиплатформенный
Tags: разработка, си, GUI, интерфейс, мультиплатформенный
Рассмотрим задачу создания приложения с графическим интерфейсом (GUI), точнее на просто приложения, а мультиплатформенного приложения, которое может быть собрано без значительных изменений исходного кода на нескольких платформах - в моем случае основными платформами будут компьютеры под управлением операционных систем Windows (компании Microsoft) и Linux.
Речь идет о десктоп (а не веб) приложениях и разработке на языке Си. На текущий момент вариантов здесь не так уж и много: начать наверное стоит с полного отсутствия отечественных решений (как в прочем и отечественных компиляторов для языков программирования С и С++, а также отечественных компьютеров, процессоров и.т.д. [конечно многие скажут: а как же Эльбрус и Байкал ? Но вы видели их в свободной продаже ? Я - нет. Так что пока здесь действительно ничего отечественного нет.]), а из зарубежных в первую очередь все выбирают Qt (это даже не просто библиотека для построения графических приложений, а целая экосистема, реализующая очень многие функции, выходящие далеко за рамки просто интефейса) которая стала практически стандартом для разработки приложений с графическим интерфейсом (правда на С++, а не C), но ... все это верно если вы разрабатываете бесплатные приложения с открытым исходным кодом, поскольку коммерческая лицензия весьма дорогая, а использование бесплатной версии в коммерческих приложения с закрытым исходным кодом весьма серьезна ограничивается лицензией (увы... многие об этом почему-то забывают), еще один хороший вариант это wxWidgents - бесплатная библиотека несколько уступающая Qt по возможностям, но с открытым исходным кодом и более либеральной лицензией, правда опять для разработки под С++.
А что же использовать в проектах на чистом Си ? Есть конечно GTK+, которая используется в первую очередь на платформе Linux в таких проектах как Gimp и ряде других, но вот на платформе Windows эта библиотека до сих пор ведет себя не очень стабильно, да и документации не так уж много по этой библиотеке, особенно на русском языке.
Сводную таблицу (на английском языке) с упоминанем других библиотек (более экзотических и практически не используемых сейчас в России) можно посмотреть здесь.
Но что делать, если необходим именно графический интерфейс, без перегруженности функций Qt, с поддержкой платформ Windows и Linux, а также с хорошей документацией ? Отвечаю - использовать библиотеку IUP (Portable User Interface), разработанную в Tecgraf (Computer Graphics Technology Group), PUC-Rio, Бразилия. Данная библиотека отличается простотой использования, содержит около 100 функций для создания и управления графическими оконными элементами, официально поддерживает языки С, Lua и LED (хотя существует множество решений по использованию этой библиотеки из других языков программирования), поддерживаются операционные системы: Windows, Linux, UNIX (SunOS, IRIX, AIX, FreeBSD), а также, весьма важный факт заключается в лицензии на использование библиотеки, которая позволяет ее бесплатное использование без ограничений как в открытых, так и в коммерческих проектах (лицензия аналогична MIT license).
Дополнительно необходимо отметить открытость исходного кода библиотеки, а также наличие двух других библиотек, разработанных в Tecgraf, которые могут расширить ее возможности: CD (Canvas Draw - библиотека двумерной графики) и IM (Image Manipulation - управление графическими объектами). Да, стоит наверное упомянуть, что и язык программирования Lua, также был разработан в PUC-Ria. Наличие удоброй справочной системы по всем библиотекам (на английском языке, переводом раздела по IUP я сейчас занимаюсь) и множества примеров по использованию упрощают изучение и сокращают время на создание собственных разработок.
Текущая версия библиотеки IUP на момент публикации данного обзора: 3.27. Проект активно развивается и следует также отметить хорошую поддержку пользователей со стороны группы разработчиков, а в особенности менеджера проекта Antonio Escaco Scuri.
В ближайшее время планирую опубликовать статью по основам установки и сборки этой библиотеки, а также перевод глав базового обучающего пособия по ней.
Стоит также отметить возможность использования режима поддержки кодировки UTF-8 в этой библиотеке, которая позволяет использовать русский язык без ограничений. Также существует бета версия патча локализации (русския язык) элементов системы IUP, который должен войти в состав следующего релиза. Замечания по локализации можно присылать мне, как автору этого патча.
Отзывов пока нет.