Пробуем wxWidgets

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

Установка под linux.

А если быть более точным xubuntu 11.04 (под убунтой, я думаю, будет то же самое). Приступим:

Открываем терминальку и пишем как нам подсказывает wiki (http://wiki.wxwidgets.org/Installing_and_configuring_under_Ubuntu):

sudo apt-get install build-essential
sudo apt-get install libwxgtk2.8-dev libwxgtk2.8-dbg
cd /usr/include/
sudo ln -sv wx-2.8/wx wx

Затем скачиваем наш любимый IDE:

sudo apt-get install codeblocks codeblocks-contrib

Почему любимый? А почему бы и нет. Может он станет моим любимым IDE, а у кого-то он уже любимый.

Теперь попробуем скомпилить тестовый проектик. Запускаем из меню "Разработка" "Code::Blocks IDE", делаем File->New->Project, выбираем "wxWidgets project", давим кнопу "Go". В следующем окне выбираем "wxWidgets 2.8.x" и давим "Next >". Снова окно... заполняем:
Project title: wxHello
Folder to create project in: (здесь давим кнопочку с тремя точками и выбираем папочку для хранения своих проектов)
и снова давим "Next >". В следующем окне вносим свои координаты, страна должна знать своих героев. Снова "Next >" и снова окошко. Выбираем "wxSmith" (мы его уже установили - codeblocks-contrib). Можно выбрать и "wxFormBuilder", говорят он лучше. Но не хочется пользоваться отдельной программой для создания интерфейса, пока. Те же, кто сразу хочет лучшего, сначала выполняют:

sudo apt-get install wxformbuilder

а потом выбирают его в меню. Я же попробую wxSmith - это мой выбор. Ниже выбираем "Frame Based" (можно выбрать и "Dialog Based", будет точно как в C++Builder). Опять же "Я так решил!". Снова давим "Next >". Здесь ничего не хочу менять, снова "Next >". Выбираем "Use Advanced Options", ставим галочку на "Use Dynamic wxWidgets Lib" и "Use Unicode build of wxWidgets" (есть подозрение, что русских букв без этой галочки не будет). Хорошо бы поставить галочку на "Create and use precompiled header (PCH)", сборка проекта ускорится в разы. Все, давим "Finish".

Перед нами основное окно нашей программы, можно выбирать элементы управления и кидать их на форму. Пока не будем этого делать, а попробуем собрать то что есть. Нажимаем "Build" и видим Fatal error, не может он найти wx/setup.h. Где его взять вики умалчивает, хотя есть там одна подсказочка, предлагается в опции gcc добавлять следующее: "`wx-config --cxxflags` `wx-config --libs`". Идем в меню "Project->Build options...", вкладка "Other options", добавляем туда две строчки "`wx-config --cxxflags`" и "`wx-config --libs`" (без моих двойных кавычек, но с родными одинарными обратными). Давим "ОК". Все, теперь проект соберется.

При сборке будут появляться 2 или 4 варнинга, не хочется с ними сегодня разбираться, я думаю это из-за конфликта ключей в wx-config и тех, что ставит Code::Blocks в проекте. Думаю можно их разрулить, но не сегодня. Сегодня давим на кнопу "Run".

wxHello

Вот оно! Само совершенство!!! И главное, оно работает! Любуемся на появившееся окно и бежим рассказывать всем какие мы крутые linux-GUI-программеры.

P. S. Позже хочу освоить статическую линковку, но, насколько я понимаю, придется перекомпилировать wxWidgets вручную, чтобы получить библиотеки для статической линковки, да и в линуксе статическая линковка - это моветон и так ведь работает. А может так оно действительно правильнее, не надо переносить в линукс виндовых привычек.

P. P. S. Проверил на другой xubunt'е. Прога, весящая, 45 килобайт потребовала по зависимостям только пакетик libwxgtk2.8-0 на 3.8 метра, что просто смешно после опытов с Qt. Так что статическая линковка здесь действительно лишняя.


Uptime. Мониторинг сайтов и серверов.