Wxwidgets сборка под windows

Сборка библиотеки wxWidgets под ОС Windows

В установке wxWidgets под ОС Windows нет ничего сложного, главное следовать приведенной ниже инструкции. Перед сборкой wxWidgets необходимо установить компилятор C++ (MinGW) и командную среду MSYS (т.е. то, в чем мы будем собирать). Ссылки на все необходимые файлы приведены в конце статьи.

В качестве компилятора можно выбрать несколько вариантов, мы остановим свой выбор на MinGW (Minimalist GNU for Windows) (www.mingw.org) — минимальный порт (т.е. минимальное количество библиотек, необходимое для сборки приложений в среде Windows) стандартного в среде GNU/Linux компилятора GCC (GNU Compiler Collection). Данный компилятор независим и в нем можно писать консольные приложения на C/C++ и без wxWidgets (более того, они будут переносимы на GNU/Linux). Для минимальной установки нам потребуются следующие пакеты:

  • gcc-core-3.4.5-20060117-3.tar.gz — ядро GCC 3.4.5
  • gcc-g++-3.4.5-20060117-3.tar.gz — С++
  • binutils-2.19.1-mingw32-bin.tar.gz — набор бинарных GNU утилит (линковщик, ассемблер, архиватор и т.д.)
  • MinGW Runtime: mingwrt-3.15.2-mingw32-dev.tar.gz и mingwrt-3.15.2-mingw32-dll.tar.gz
  • w32api-3.13-mingw32-dev.tar.gz — библиотеки и заголовочные файлы WinAPI

Архивы распаковываем в папку на C диске C:\mingw. Для удобства установки, мы подготовили архив с уже собранной папкой mingw. Все, что нужно сделать — распаковать архив в корень диска C. Установка компилятора завершена.

Установим среду для работы с компилятором MinGW. В качестве командной оболочки воспользуемся MSYS: A Minimal SYStem минимальная система с POSIX (Portable Operating Systems Interface — Интерфейс переносимых операционных систем) совместимым Борн/Bourne шеллом представляет собой коллекцию UNIX-команд необходимых для полноценной работы с компилятором MinGW, хотя и не ограничивается только им.

Необходимо три пакета:

  • MSYS-1.0.10.exe — MSYS
  • msysDTK-1.0.1.exe — инструментарий разработки
  • msysCORE-1.0.11-2007.01.19-1.tar.bz2 — обновление

Последовательно запускаем файлы и следуем указаниям программы, а архив распаковываем в папку C:\msys. MSYS запускается через соответствующую иконку на рабочем столе. Прописываем в переменной окружения PATH пути до исполняемых файлов C:\mingw и C:\msys (Панель управления → Система → Дополнительно → Переменные среды).

Установка завершена, осталось только проверить, что все установилось правильно. Для этого набираем (в папке C:\msys\1.0\home) программу (hello.c):

Собираем ее с помощью команды gcc hello.c и получаем файл a.exe . Запускаем его и смотрим результат (вывод в консоле строчки Hello, world. ). Замечательно! Теперь у вас есть компилятор C++ и рабочая среда.

Перейдем к установке wxWidgets. Для этого распаковываем архив и исходными кодами в папку C:\ (в архиве уже есть папка wxMSW-2.8.9). Запускаем MSYS и переходим в каталог C:\wxMSW-2.8.9 командой cd c:wxMSW-2.8.9 (учтите, что здесь важен регистр, т.е. wxMSW и wxmsw — это разные папки).

Следующий шаг — сборка библиотеки. Проявляя чудеса дальновидности, мы проведем сборку в двух конфигурациях: отладочной (debug) и окончательной (release). Но, для начала, рассмотрим основные опции, которые влияют на сборку библиотеки (в дальнейших примерах вы можете менять опции на те, что вам больше всего подходят):

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

Полный список опций вы можете получить по команде wx-config —help (предварительно зайдите в папку с исходниками wxWidgets cd c:wxMSW-2.8.9 ).

Процесс сборки библиотеки стандартный для ОС GNU/Linux: сначала идет конфигурация (скрипт configure), потом сборка (make) и установка (make install). Начнем с debug-сборки. Переходим в папку с исходниками cd c:wxMSW-2.8.9 , создаем папку debug mkdir debug , переходим в нее cd debug и запускаем конфигурационный скрипт (напоминаем, что вы можете указать опции под свои предпочтения, за исключением опции —enable-debug ):

Конфигурация займет некоторое время (несколько минут) и в конце появится табличка с параметрами. Далее запускаем команду сборки make (сборка может занять очень много времени — 30 мин и дольше, не паникуйте) и установки make install (эта команда копирует все необходимые файлы и библиотеки в каталог с компилятором). Для проверки работоспособности запустим один из примеров. Переходим в соответствующий каталог cd ../samples/minimal , собираем пример make и запускаем minimal.exe . В примерах сборка идет через Makefile — файл с параметрами сборки.

Создадим теперь собственную программу (уже в вашей рабочей папке C:\msys\1.0\home). Создаем файл hello.cpp (объяснение работы этого примера будет в следующей статье):

Для сборки используем команду g++ hello.cpp `wx-config —debug —libs —cxxflags` -o hello.exe . Следует обратить внимание на кавычки — это мягкие кавычки (обратные, там, где клавиша ‘ё’) и не следует их путать с прямыми (где клавиша ‘э’). В результате получим программу hello.exe. Так как библиотеки сконфигурированы на режим отладки, то и размер исполняемого файла получается огромным (>20Мб).

Читайте также:  Как обновить mac os capitan до high sierra

Для Release-сборки повторяем всю процедуру, только создаем папку release и конфигурируем командой

wxWidgets + Codelite. Быстрый старт

Библиотека для разработки GUI приложений wxWidgets продолжает развиваться и на сегодняшний день (лето 2020) уже доступна версия 3.1.3. Библиотека помогает создавать кроссплатформенные приложения, при этом максимально используя родные графические элементы операционной системы. Другой на мой взгляд важной особенностью библиотеки является то, что на текущий момент ее лицензия позволяет также создавать закрытые коммерческие приложения. В третьих — доступны исходные коды библиотеки. Более того, библиотека прекрасно интегрируется в Codelite — open-source кроссплатформенной средой разработки.

Как это зачастую бывает у некоммерческих проектов — для «непродвинутых» пользователей установка и настройка рабочей среды для разработки приложений на wxWidgets — нетривиальная задача. Помню времена Delphi 2007 — когда запустил инсталятор и через пару минут уже начал рисовать форму с кнопочками. Пару часов и программа для расчета КПД по измеренным вольт-амперным характеристикам солнечного элемента готова. С wxWidgets первый раз было все сложнее. Благодаря долгому чтению разрозненных мануалов и инструкций, в т.ч. на хабре мне как-то удалось один раз установить и настроить библиотеку. Однако полного понимания сути происходящих процессов я так не получил. И в очередной раз устанавливая новую версию библиотеки пришлось снова потратить немало времени, чтобы разобраться в вопросе. Данная заметка надеюсь добавит немного большего понимания того как происходит установка и что там внутри для тех, кто как и я, решились окунуться в мир программирования GUI-приложений на основе wxWidgets. В отличие от большинства инструкций здесь обойдемся без компиляции исходных кодов библиотеки.

Исходные данные:
Компьютер под управлением 64 битной Windows 7, 8 или 10 и как всегда нехватка времени.

С Visual Studio у меня с самого начала не задалось, после компактной и быстрой Delphi 2007 хотелось чего-то похожего, но под c++ разработку. Codelite стала для меня той самой компактной и быстрой IDE. Размер инсталятора для Codelite 14 занимает всего 33 МБ.

Итак, скачиваем установочный файл Codelite Stable 64 бит с сайта. Его установка не вызывает трудностей. После установки пока не запускайте программу. Она попытается выполнить поиск установленных компиляторов, а их может там и не быть. Поэтому вторым шагом мы будем ставить компилятор.

Под понятием «компилятор» в широком смысле скрывается набор программ для компиляции. Это и сам компилятор и линковщик и еще куча вспомогательных утилит. Есть платные и бесплатные компиляторы. С закрытым и открытым кодом. Допускающие создавать коммерческие проекты или нет.

Так как у нас как всегда не хватает времени, то устанавливать библиотеку wxWidgets будем уже в скомпилированном виде (в виде бинарных файлов). Да, после долгих экспериментов с компиляцией из исходных файлов, где обнаружилась уйма ньюансов в зависимости от версии библиотеки и компилятора решил на время оставить это дело. Разработчики библиотеки предлагают скачать бинарные файлы для нескольких компиляторов: под Visual Studio и Mingw различных версий. Например, выбираем свежий релиз wxWidgets для разработчиков 3.1.3. Он доступен в виде бинарников для компилятора (сборки) MinGW-w64 8.1. Запоминаем название и идем на сайт данной сборки: mingw-w64.org. В разделе «Загрузки» будет таблица с названием «Pre-built toolchains and packages» где находим в первом столбце «MingW-W64-builds». Скачиваем, запускаем. Откроется инсталлятор, где будет предложено выбрать версию компилятора и несколько опций. Выбираем тот, что запомнили ранее — версию 8.1, x86_64, остальные поля без изменений.

Путь можно указать например C:\mingw-w64. Инсталлятор загрузит и установит выбранный компилятор. В итоге по адресу C:\mingw-w64\mingw64\bin будут находится exe файлы компилятора. Позже добавим этот путь к системной переменной path

Далее осталось загрузить и установить библиотеку wxWidgets. Для этого переходим на сайт wxwidgets.org в раздел «Загрузки» и выбираем бинарную сборку под наш уже установленный компилятор (MinGW-w64 8.1).

Номер версии имеет значение и должен соответствовать версии компилятора. Сайт предложит скачать на выбор: архив с заголовочными файлами, Development Files и Release DLLs под 32 или 64 версию. Прежде чем скачивать хочу рассказать про ньюанс с работой wxWidgets. Так выглядит опция для с++ компилятора в настройках проекта по-умолчанию с использованием wxWidgets в Codelite IDE под Windows:

Как видим — никаких путей до библиотеки и ее заголовочных файлов. Пути и директивы компилятору будут отправлены после выполнения команды $(. ) в оболочке. Забегая вперед — на настроенной системе результат выполнения команды будет примерно такой:

Чтобы вся эта конфигурация с wx-config заработала нужно проделать следующее:
1) С того же раздела «Загрузки» скачиваем исходные коды библиотеки wxWidgets (Windows Installer). Запускаем инсталятор и указываем каталог для установки C:\wx. Ничего компилировать мы не будем. Зато получим заголовочные файлы, структуру каталогов, примеры и если что, можем подсмотреть в исходных файлах реализации функций.

Читайте также:  Все для windows vienna

2) Скачиваем также файл «Development Files» в разделе wxWidgets binaries для 64 битной версии нашего компилятора (MingGW-w64 8.1). Распаковаваем содержимое в C:\wx\lib\ попутно переименовав каталог gcc810_x64_dll в gcc_dll. В итоге путь до файлов должен получиться C:\wx\lib\gcc_dll\ В этом каталоге будут файлы с расширением *.a и *.dll, а также два каталога: mswu и mswud.

Последний штрих. Добавляем системные переменные.

В переменную path в конец добавим:

А в переменные среды для текущего пользователя:

После добавления переменных обязательно нужно выйти из системы либо перезагрузить компьютер.

Теперь все готово чтобы в первый раз запустить Codelite. Программа предложит выбрать «Стиль кодирования». Выбираем профиль «C/C++ Development». Далее предложит просканировать компьютер на наличие установленных компиляторов. Жмем на Scan и выбираем наш установленный ранее MinGW. Далее можно выбрать цветовую тему и как осуществлять отступы (пробелом или табом). Программа сама перезапустится для применения изменений.
Далее создаем новый Workspace C++ и указываем для него путь. Создаем новый проект путем нажатия на имени Workspace в навигационной панели правой клавишей мыши New->New Project

В окне настроект проекта выбираем поля как на рисунке. Жмем OK. Далее полностью ракрываем дерево проекта в левой части экрана и двойным щелчком открываем файл main.cpp. Родной пример для меня, как новичка, был сложен для понимания, поэтому прикладываю свою заготовку файла main.cpp:

Комбинацией CTRL+F5 компилируем, собираем и запускаем проект.

Получившийся exe файл имеет следующие зависимости:

Для того, чтобы он запустился на другом компьютере необходимо к нему в тот же каталог добавить несколько dll. В данном примере это пара библиотек wxWidgets и компилятора minGW:

Для более серьезных проектов понадобится использовать больше зависимостей, поэтому стоит скачать с сайта wxWidgets помимо Development Files еще и Release DLLs под свой компилятор.

Все. Надеюсь быстрый старт получился действительно быстрым. У данного способа есть недостаток — данные бинарные файлы WxWidgets рассчитаны на динамическую линковку с приложением, поэтому создать монолитный exe файл, запускающийся на других компьютерах таким способом не получится. По крайней мере мне не удалось.

Удачи! И до новых встреч!

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Настройка wxWidgets в Code::Blocks

Краткий справочник новичка по настройке wxWidgets с Code::Blocks в Windows [1]
Поддерживаемые компиляторы: MinGW или MSVC

  • Последняя версия Code::Blocks — необходимо успешно установить и запустить последнюю версию Code::Blocks отсюда: cтраница загрузки Code::Blocks
  • Компилятор для Windows — необходимо правильно установить либо
    • MinGW/GCC — бесплатный компилятор, или
    • Microsoft Visual C++ Express бесплатно, но также требуется установка Windows SDK.

При загрузке официального релиза Code::Blocks, есть возможность загрузки пакета, который включает в себя полный набор инструментов MinGW/GCC.

  • Путь к файлам надлежащим образом определен — Убедитесь, что папка, содержащая исполняемые файлы компилятора (обычно C:\Program Files\CodeBlocks\bin, или C:\MinGW32\bin) добавлена в вашу переменную среды Windows PATH.

Содержание

Загрузка исходного кода wxWidgets [ править ]

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

Рекомендованная к использованию версия wxWidgets 2.8.12. Нажмите сюда, чтобы скачать исходные коды wxWidgets 2.8.12 для Windows (wxMSW-2.8.12-Setup.exe; 12.2 MB). Можно также зайти на страницу загрузки wxWidgets чтобы проверить доступность новой стабильной версии. Настоятельно рекомендуется установить исходные коды wxWidgets с путем без пробелов. Требуется выбор тома (диска) с минимум 300 МБ свободного пространства.

Сборка wxWidgets [ править ]

  • Откройте окно командной строки для сборки. Если вы используете MinGW/GCC, проще будет воспользоваться стандартной командной оболочкой Windows (откройте меню «Пуск», нажмите кнопку «Выполнить. «, введите «cmd» и нажмите OK). Если в меню «Пуск» нет кнопки «Выполнить. », то ее можно отобразить нажав правой кнопкой мыши кнопку «Пуск», далее выбираем пункт «Свойства», далее вкладка «Меню Пуск», кнопка «Настроить», поставить флажок у «Команда Выполнить», нажать кнопку «ОК». Если вы используете MSVC, следует использовать специальную командную оболочку, которая устанавливает правильные переменные среды. (Поищите в меню запуска Visual Studio пункт «Visual Studio 20XX Command Prompt» — это ярлык запуск оболочки с установленными переменными среды). Если вы используете версию MSVC, в которой необходимо скачать Platform SDK отдельно, убедитесь, что командная среда включает инструмент Platform SDK и пути к нему, а также стандартный компилятор с путями.
  • Перейдите в каталог сборки wxWidgets ( в тексте далее — реальный путь распаковки его исходных кодов, например C:\wxWidgets-2.8.12):

Примечание: /D флаг после cd может быть опущен из команды; просто это позволяет командной строке при необходимости изменить диски.

  • Выполните команду сборки. Рекомендованная команда для MinGW/GCC:
  • Рекомендованная команда для MSVC:
  • Этот этап может занять длительное время ; сборка длится порядка 30 минут на быстрых компьютерах, а на медленных может занимать несколько часов.
  • Если используются более поздние версии GCC, во время сборки будет отображаться множество предупреждений. Это обстоятельство может заметно замедлить процесс сборки; можно перенаправить предупреждения в текстовый файл, добавив в команду сборки «2>errlog.txt» или подавить их полностью путем добавления «2>nul».
Читайте также:  Не могу загрузить windows с флешки что делать

С последними версиями GCC (не с MSVC) необходим параметр «CXXFLAGS =-fno-keep-inline-dllexport» для предотвращения проблем с использованием памяти при выполнении финального шага сборки в монолитную DLL.

В разделе ниже под названием «Пояснение по опциям сборки wxWidgets» объясняется подробная информация о значении различных вариантов сборки: BUILD, SHARED, MONOLITHIC и UNICODE. Эти опции имеют критически важное значение, поскольку они определяют основу среды разработки wxWidgets используемой в дальнейшем. А именно, требуется дублировать их при запуске мастера создания проекта Code::Blocks’ wxWidgets.

Создание проекта wxWidgets в Code::Blocks [ править ]

  • В стартовой странице Code::Block выберите «Create a new project»; или, откройте меню «File», выберите «New» и нажмите «Project. «
  • Выберите «wxWidgets project»
  1. Первая страница — это вступление, которое можно пропустить в будущем.
  2. Выберите версию wxWidgets которая нужна для работы. Если вы придерживались инструкции выше, нужно выбрать «wxWidgets 2.8.x».
  3. Задайте название и расположение проекта.
  4. Введите данные автора (не обязательно).
  5. Выберите опции автоматической генерации кода и файлов проекта.
  6. Выберите расположение wxWidgets. Крайне рекомендуется использовать глобальную переменную, для этого введите «$(#wx)» (без кавычек). Если прежде эта глобальная переменная не была определена, появится диалоговое окно глобальных переменных; в качестве базового пути выберите ваше местоположение установки wxWidgets. Остальные пути заполнять не требуется.
  7. Задайте опции отладочной (debug) и/или конечной (release) конфигураций проекта. Рекомендуется наличие хотя бы отладочной конфигурации.
  8. Выберите опции сборки wxWidgets. Далее следует выставить значения опций «wxWidgets Library Settings» в строгом соответствии с опциями сборки wxWidgets о которых говорилось выше. Другие настройки на этой странице, не связанные с параметрами сборки проекта wxWidgets — можно использовать их или не использовать, по своему предпочтению. Для того, чтобы избежать использования отладочной сборки wxWidgets (как рекомендовано), необходимо выбрать «Настроить Расширенные параметры» и затем оставить «Use __WXDEBUG__ and Debug wxWidgets lib» снятым на следующей странице.
  9. При необходимости выберите дополнительные библиотеки. Вы не должны выбирать любую из них для обычного использования.

Сборка и Запуск [ править ]

Нажмите «Сборка и запуск» (F9) чтобы проверить сборку и запуск приложения. Если все пойдет хорошо, ваше приложение wxWidgets должно появиться на экране.

Пояснение по опциям сборки wxWidgets [ править ]

Что означают опции BUILD, SHARED, MONOLITHIC, and UNICODE?

BUILD [ править ]

BUILD задает какую версию wxWidgets, отладочную (BUILD=debug) или конечную (BUILD=release), следует собрать. В подавляющем большинстве случаев нужна только конечная версия выпуска wxWidgets, так как отладка самого wxWidgets не потребуется. Вполне можно создавать отладочные сборки своих собственных программ, которые ссылаются на конечную сборку wxWidgets.

  • Отладочная (debug) сборка wxWidgets ‘ создает библиотеки с суффиксом «d», например «libwxmsw28d.a»/»wxmsw28d_gcc_custom.dll».
  • Отладочная (debug) сборка wxWidgets создает папку «mswd» или «mswud» в папке вывода библиотеки wxWidgets.
  • Конечная (release) сборка wxWidgets ‘ создает библиотеки без суффикса «d», например, «libwxmsw28.a»/»wxmsw28_gcc_custom.dll».
  • Конечная (release) сборка wxWidgets ‘ создает папку «msw» или «mswu» в папке вывода библиотеки wxWidgets.

SHARED [ править ]

SHARED задает какую версию wxWidgets, динамически связываемую DLL (SHARED=1) или статически связанную static (SHARED=0), следует собрать. При сборке DLL версии компиляция происходит быстрее и размер исполняемого файла меньше. Общий размер одного исполняемого файла плюс библиотеки DLL wxWidgets больше, но одну и ту же библиотеку DLL могут использовать несколько исполняемых файлов и в этом случае получается экономия места на диске.

  • Динамически связываемая DLL сборка wxWidgets создает библиотеки импорта (например, libwxmsw28.a) и библиотеки DLL (например, wxmsw28_gcc_custom.dll). При распространении своей программы библиотеку DLL следует включать в дистрибутив.
  • Статически связываемая static сборка wxWidgets создает только статические библиотеки (например, libwxmsw28.a), и в дальнейшем не потребуется распространять библиотеки DLL wxWidgets вместе с созданным приложением.

MONOLITHIC [ править ]

MONOLITHIC задает какую библиотеку, единую (MONOLITHIC=1) или многокомпонентную (MONOLITHIC=0) следует собрать. При монолитной сборке дальнейшие установка и разработка проекта выполняются намного проще, т.к. если используется DLL тип сборки библиотеки, то для распространения потребуется только одна библиотека DLL. При немонолитной (multilib) сборке, собираются несколько различных библиотек, и можно избежать связывания со всей базой кода wxWidgets тех программ, которые не нуждаются в ней. Нужно быть полностью уверенным в своих действиях выбирая правильный компонент библиотеки.

  • Монолитная monolithic сборка wxWidgets создает единую библиотеку импорта wxWidgets (такую как libwxmsw28u.a) и единую DLL (такую как wxmsw28_gcc_custom.dll).
  • Немонолитная multilib сборка wxWidgets создает несколько библиотек импорта (libwxbase28u.a, etc.) и несколько DLL.
  • Дополнительные статические библиотеки всегда создаются с любой сборкой wxWidgets (libwxexpat.a, libwxjpeg.a, и т.д.). Эти библиотеки обычно не требуются при использовании DLL сборки wxWidgets, но они нужны при использовании статической сборки.

UNICODE [ править ]

UNICODE задает использование в библиотеке wxWidgets и в создаваемой программе поддержки символов Юникода. Эта возможность используется в большинстве программ для ОС Windows 2000 и более поздних версий. Более ранние версии Windows не имели необходимой поддержки Юникода. Вы всегда должны использовать макросы _(«string») и _T(«string») wxWidget для обеспечения того, чтобы жестко закодированные строки были правильного типа.

Оцените статью