Меню Рубрики

Как установить wxwidgets на linux

wxWidgets под ОС GNU/Linux

Перед установкой wxWidgets под GNU/Linux следует проверить, что в системе есть необходимые для библиотеки пакеты: GTK+ и gcc. Первый пакет устанавливается в соответствующей секции yast: Шаблоны ← GNOME Development ← gtk2-devel.

Распаковываем архив в папку

/src/wxGTK-2.8.9 . Далее запускается консоль и выполняются следующие команды:

В данном примере мы создаем отдельную сборку для release-версии программы. Отметим, что команду ldconfig необходимо запускать при сборки динамической версии библиотеки. В примере собирается статическая версия и запуск команды можно пропустить (хотя от ее запуска хуже не будет — по крайней мере, не забудете ее запустить, когда она будет нужна) . Из приведенных здесь команд только одна требует прав суперпользователя — make install , поэтому в начале можно не запускать команду su и последнюю команду запустить как sudo make install . Для удаления сборки используйте команду make clean (запускается из каталога сборки). Для удаления используйте команду make uninstall .

Можно делать столько сборок библиотек с различными параметрами, сколько вам нужно. Основные параметры следующие:

  • Release/Debug. Debug конфигурация добавляет информацию, необходимую для отладки программы. Release верия содержит опции оптимизации и используется для окончательной сборки программы. Рекомендуется всегда делать отладку программы в Debug-версии.
  • Unicode/Non-Unicode — включить поддержку уникодов или нет. Включение уникодов позволяет использовать национальные языки (а не только английский). Отключение уникодов не дает дополнительных преимуществ,
  • Static/Shared. Static — сборка идет с включением библиотек в исполняемый файл и позволяет делать независимые приложения. Shared — размер файла будет меньше за счет того, что библиотеки не включаются в программу, но появляется зависимость от внешних библиотек, которых у пользователя может и не оказаться.
  • Multi-lib/Monolithic. Multi-lib — создается несколько библиотечных файлов (по области применения). Monolithic — создается один файл, включающий все функции.

Полный список опций вы можете получить по команде wx-config —help .

Приведем команды для сборки отладочной конфигурации в папке debug (первая команда — это выход из папки с релиз-конфигурацией):

Установка завершена. Можно перейти в каталог с примерами cd ../samples/minimal и собрать и запустить пример make и ./minimal . Если все собралось удачно, то вы увидите простое графическое приложение.

Полезные скрипты

Напишем несколько скриптов, которые облегчат вам работу с wxWidgets. Скрипты мы поместим в каталог

/bin (для перехода, набираем в консоли cd

/bin ). Если каталога нет, то создаем его cd

В этом каталоге создадим следующие скрипты (первая команда, создание через vi, но можно создавать файлы и в любом другом редакторе).

Мы создали два скрипта для сборки собственных проектов под библиотеку wxWidgets (под две конфигурации). Сделаем их исполняемыми chmod +x wxdebug и chmod +x wxrelease . Первая строка (#/usr/bin/sch) — определяет в каком формате записан скрипт (под какой шелл — в примере под C-shell). Вторая строке (g++ . ) — компиляция проекта с правильными опциями компилятора. В релиз версии добавлены строки для отбрасывания лишней информации из исполняемого файла и бинарная упаковка файла. Эти строки нужны, если вы хотите уменьшить размер исполняемого файла (в несколько раз). Возможно, потребуется дополнительная установка пакета upx (входит в практически любой дистрибутив).

Пропишем в переменные окружения путь до папки с нашими скриптами (примеры для Bash-shell и C-shell):

Для тестирования собираем пример (hello.cpp, см. ниже код):

Команда ll приведена лишь для того, чтобы вы могли сравнить размер исполняемого файла, собранного разными конфигурациями.

Источник

Установка и использование wxWidgets в Ubuntu и Code::Blocks

Устанавливаем необходимые пакеты:

Здесь предполагается, что последняя версия wxWidgets — 2.8. Если это не так, новые названия соответствующих библиотек можно найти поиском в Synaptic.

Простейший файл wxhello.cpp , использующий wxWidgets:

Строка компиляции для wxhello.cpp выглядит так:

где wx-config —cppflags возвращает флаги, необходимые для компиляции, а wx-config —libs — флаги, необходимые для линковки. Обратные апострофы «`» имеют значение!

Code::Blocks позволяет создать заготовку проекта wxWidgets project (благо сам редактор написан с помощью wxWidgets), однако это не всегда удобно. Для того, чтобы взять все под свой контроль, в Code::Blocks создается пустой проект, добавляются исходники (wxhello.cpp), и в Project/Build Options. вкладке Compiler settings/Other options указывается wx-config —cppflags , а во вкладке Linker settings/Other linker options: wx-config —libs .

Читайте также

Комментарии

Дмитрий Храмов
Компьютерное моделирование и все, что с ним связано: сбор данных, их анализ, разработка математических моделей, софт для моделирования, визуализации и оформления публикаций. Ну и за жизнь немного.

Источник

WxWidgets – библиотека инструментов для создания GUI-приложений

Для разработки и реализации графического пользовательского интерфейса (GUI) в настоящее время существуют разные инструменты. Как правило, такие инструменты представляют собой фреймворк (библиотека специализированных программных инструментов), для функционирования и использования которого необходима соответствующая среда рабочего окружения. Такая ситуация например, с окружением JRE для написания GUI на Java. Примерно то же самое и с .Net – огромный неповоротливый фреймворк. В итоге, многие программисты задумываются над поиском более независимого, лёгкого и универсального инструмента. Желательно такого, чтобы для запуска и работы приложений на его основе не нужно было его «носить с собой». Именно такой альтернативой и является библиотека wxWidgets. В данной статье будут рассмотрены основные возможности этой библиотеки, а также её сборка для Linux-систем.

Почему именно wxWidgets?

Несмотря на то, что wxWidgets не является такой популярной, как .Net, Qt иди Java, однако возможности этой библиотеки куда более привлекательны, особенно для тех разработчиков, которые ценят качественную переносимость приложений между платформами, а также скорость их работы и потребление ресурсов.

Фреймворк .Net довольно тяжёл. Производительность приложений на основе .Net оставляет желать лучшего. Совместимость с UNIX-подобными системами для него также является проблемой. И это направление в виде платформы Mono представляется далеко не самым перспективным.

Qt-фреймворк, основанный на C++, хоть и является более быстрым и переносимым по сравнению с .Net, однако не совсем ясна ситуация с его лицензией. Существует открытая и коммерческая лицензии этого инструментария. Что, очевидно, налагает некоторые ограничения на использование свободной его версии. Иначе бы параллельно не существовало коммерческой ветки с более широкими возможностями. Этот факт также заставляет сомневаться относительно перспектив проектов на Qt. В техническом же отношении, этот фреймворк не обеспечивает полноценный нативный внешний вид приложений. Контроллы и элементы управления выглядят несколько иначе, нежели отрисовываемые средствами WinAPI в Windows или на GTK в UNIX-системах. Зачастую, это смущает и отпугивает пользователей.

Приложения на Java работают как минимум в полтора раза медленнее, чем на C/C++. Это далеко не секрет. Так же, как и то, что приложения, созданные на основе Java-апплетов внешне никак не вписываются в нативный стиль оформления ни одной из платформ. Пользователям не нравится работать с необычно и даже коряво выглядящими элементами интерфейса Java-приложений. При этом, как и в случае с .Net, необходимо всюду, на любой используемой платформе иметь установленную среду JRE для работы Java-апплетов. Именно такая возня и отталкивает многих разработчиков от использования Java.

Практически всех вышеперечисленных недостатков лишена wxWidgets – абсолютно открытая и свободная библиотека, которая способна отрисовывать GUI с помощью API платформы. Это значит, что окна приложений на wxWidgets и элементы интерфейса выглядят стандартно, гармонично вписываясь в оформление рабочего стола используемой платформы. При этом скорость работы и производительность таких приложений действительно впечатляет. Сама же библиотека написана на C++ и представляет собой набор классов, реализующих весь функционал библиотеки. Эти классы подключаются к проектам и используются как базовые, для создания приложений. Основными преимуществами wxWidgets над другими аналогами являются:

  • быстродействие и производительность, ведь инструкции о рисовании элементов интерфейса транслируются непосредственно к стандартному API платформы без каких-либо промежуточных программных интерфейсов и сред;
  • отсутствие обязательной предустановки wxWidgets – просто собрал и используй, подключая заголовочные файлы и файлы библиотек к проекту;
  • сравнительно небольшой размер собранных приложений, даже при их статической линковке;
  • быстрое создание GUI вручную из кода, без использования RAD-утилит, которые, кстати, для wxWidgets тоже существуют, например wxSmith в Code::Blocks IDE, wxFormBuilder или wxCrafter в CodeLite IDE.

Стоит еще раз обратить внимание на то, как wxWidgets рисует элементы управления интерфейса. Приложение, написанное на wxWidgets, которое скомпилировано в Windows, будет отображаться стандартными средствами WinAPI. Код того же самого приложения, без каких-либо изменений, но скомпилированный под UNIX будет рисоваться также стандартными средствами, т. е. на GTK. Можно даже собрать GUI на wxWidgets так, что оно будет использовать самый, что ни на есть чистейший X11. И это без изменения кода. Вот, что такое по-настоящему качественная переносимость.

Кроме богатых возможностей создания GUI wxWidgets имеет и ряд других функций, таких как работа с сокетами, регулярными выражениями, работа с базами данных (БД), HTTP-сервер, клиенты HTTP и FTP обработка XML и полноценная поддержка графических библиотек, таких как OpenGL.

Казалось бы, почему при всех своих достоинствах, wxWidgets практически непопулярен? Во-первых, это проект, который начинался всего одним человеком. В 1992 году над ним начал работать его создатель — Джулиан Смарт. Он и в настоящее время занимается поддержкой wxWidgets, но уже в составе небольшой группы. Таким образом, wxWidgets – это продукт творчества, а не коммерческий проект, над которым работает армия программистов и который продвигается благодаря рекламным кампаниям. Это и есть главный недостаток wxWidgets. И как следствие — небольшое количество обучающих и поддерживающих ресурсов. Основными из которых являются официальный ресурс вики, а также форумы сообщества.

Примеры приложений, созданных на wxWidgets

Несмотря на не самую выдающуюся популярность, приложений на основе wxWidgets достаточно много. Среди таковых, кстати, есть и снискавшие уважение пользователей, например Code::Blocks IDE:

Рис. 1: Среда разработки Code::Blocks IDE в Windows 7.

Существует также ещё одна IDE, подобная Code::Blocks. Но с более изящным оформлением, удобным функционалом и несколько более дружественным GUI – это CodeLite:
Графический интерфейс популярного кроссплатформенного FTP-клиента FileZilla также написан на wxWidgets:
Популярным бесплатным звуковым редактором, доступным для всех платформ является Audacity, который, как можно догадаться, для отображения GUI использует библиотеку wxWidgets:

Рис. 2: Кроссплатформенная среда разработки CodeLite IDE в KDE.

Сборка wxWidgets под Linux

Для своей компиляции библиотека wxWidgets не требует сторонних или дополнительных зависимостей. Для начала нужно скачать архив с исходными текстами библиотеки:

Распаковка загруженного архива:

Содержимое архива будет распаковано в поддиректорию wxWidgets-3.0.4 текущего каталога. Теперь нужно перейти в каталог с исходниками и создать в нём директорию для сборки, например gtk-build:

Далее, необходимо сконфигурировать будущую сборку, выполнив скрипт конфигурации, передав ему необходимые параметры:

Назначение указанных параметров следующее:

  • –-with-gtk3 — включение поддержки GTK версии 3;
  • –-disable-shared — включение статической линковки, при которой библиотеки wxWidgets будут включены в исполняемый файл;
  • —enable-unicode – поддержка Юникода в приложении;
  • —with-opengl – поддержка графической библиотеки OpenGL, на случай, если кому-то нужно написать свой игровой движок;
  • —prefix=PATH – здесь (вместо PATH) указывается желаемое расположение библиотеки в файловой системе. Т. е. куда она будет впоследствии установлена;
  • —with-libmspack – поддержка форматов сжатия Microsoft, таких как *.CAB, *.CHM и т. д., для большей кроссплатформенности не помешает;
  • —with-sdl – поддержка библиотеки SDL для создания графического контекста окон и фреймов, когда не хочется это делать вручную.

Приведённый перечень параметров сборки является наиболее универсальным и позволяет создавать практически любые приложения на wxWidgets. В результате вывод команды (несколько последних строк) configure должен быть примерно таким:

Если сборка завершилась ошибкой установите необходимые пакеты и библиотеки, например в убунту

Теперь можно приступить непосредственно к сборке:

Здесь ключ -j — это количество потоков для одновременной обработки нескольких задач сборки. В случае, когда используется 8-ядерный/16-поточный процессор, такой как например, AMD Ryzen 7 2700, можно указать -j16. Чем больше потоков, тем быстрее сборка.

Далее, после окончания сборки, самое время установить готовую библиотеку wxWidgets:

В результате файлы библиотеки и файлы заголовков будут скопированы в соответствии с указанным на этапе конфигурирования, в параметре —prefix значением — в /opt/wxwidgets-gtk3/ . Если нужно, чтобы библиотека устанавливалась там же, где и была собрана, то следует задать —prefix=$(pwd) .

Далее, для удобства можно установить переменную окружения, чтобы использовать служебную команду wx-config, добавив в файл

/.bashrc строку, перезапустив после этого сеанс пользователя:

Проверка, что всё работает:

Команда ws-config используется для определения путей подключения заголовочных файлов и библиотек. Которые необходимы для указания компилятору и линковщику. Так, например, для того, чтобы скомпилировать проект на wxWidgets. Необходимо передать компилятору то, что возвращает команда wx-config:

Здесь параметры «—cxxflags» и «—libs» указывают, что команда wx-config должна возвратить требуемый для удачной сборки набор флагов компилятора и пути подключения заголовочных файлов и библиотек wxWidgets.

Заключение

В заключение важно заметить, что библиотека wxWidgets поставляется в готовом виде практически в любом из дистрибутивов Linux. Однако далеко не всегда это универсальные сборки. Часто бывает, особенно это касается сложных проектов, что необходимо пересобрать wxWidgets с нужными параметрами. Задействовав таким образом дополнительные возможности, которых нет в стандартной сборке из репозитория дистрибутива. Для того, чтобы узнать, какие параметры сборки и возможности доступны, нужно выполнить команду ../configure —help в каталоге сборки wxWidgets. В результате будет выведен список доступных параметров и их назначение.

Как можно видеть, wxWidgets – это действительно универсальная и по-настоящему кроссплатформенная библиотека. Которая является достойным (если не самым лучшим) выбором для создания быстрых и платформонезависимых приложений любой сложности и направленности.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Как установить world of tanks на linux mint 18
  • Как установить winetricks на linux
  • Как установить wine на linux debian
  • Как установить windows с флешки вместо linux
  • Как установить windows если установлен linux