Qt + Ruby = настройка в Linux и Windows

Ruby*
Привет всему сообществу. Сегодня напишу как настроить привязку qt и ruby в Linux и Windows.
Ruby — интерпретируемый язык высокого уровня для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, «сборщиком мусора» и многими другими возможностями. Ruby близок по особенностям синтаксиса к языкам Перл и Эйфель, по объектно-ориентированному подходу к Smalltalk. Также некоторые черты языка взяты из Python, Лисп, Dylan и CLU. Подробнее тут

Trolltech Qt (произносится «кьют») — кросс-платформенный инструментарий разработки ПО на языке программирования C++.Подробнее тут


Linux


Система линукс у меня будет Ubuntu, поскольку на ней работаю. Думаю под остальные будет тоже не трудно. Начнем с нее. Заходим в раздел Система->Администрирование->Менеджер пакетов Synaptic. Нам по минимуму надо поставить пакеты:
ruby-full — полная инсталяция руби
rubygems — gems для ruby
libgemplugin-ruby — плагин для руби
libqt4-ruby — библиотека ruby для работы с qt
Остальные зависимости система сама подтянет (например libqt4-core, libqt4-gui и прочее)
Также нам потребуется редактор для работы с Ruby. Я использую SciTE. Это дело вкуса :)
После того как пакеты установлены мы можем протестировать работоспособность. Заходим в туториал, и возьмем например 3 пример.

require 'Qt4'

app = Qt::Application.new(ARGV)

window = Qt::Widget.new()
window.resize(200, 120)

quit = Qt::PushButton.new('Quit', window)
quit.font = Qt::Font.new('Times', 18, Qt::Font::Bold)
quit.setGeometry(10, 40, 180, 40)
Qt::Object.connect(quit, SIGNAL('clicked()'), app, SLOT('quit()'))

window.show()
app.exec()

Расписывать что данный код делает я не буду — там ниже в том же мануале все объясняется подробно. Должна появится форма с кнопкой выхода. Код в SciTE сохраняем под расширением rb и нажимаем F5 (переметры по-умолчанию должны отлично сработать).
Наш результат
1
А вот и долгожданное окошко
2
Если оно появилось — значит все установленно удачно и вы можете начать программировать. Добавлю что в основном с установкой и настройкой под Линукс не должно возникнуть особых проблем, поскольку ставил на десятки машин и пока не наблюдал проблем с этим.

Windows


Теперь начнем с Windows(с ним получилось больше возьни).
Нам потребуется:
Ruby 1.8.5 Установщик в один клик — название за себя говорит :)
qtruby4-1.4.9-mswin32.gem — библиотека qt4 для ruby
nmake — утилита автоматической сборки для Windows (без нее qtruby не установится)
Начнем с того, что установим Ruby (при установке должно также будет установится rubygems).
Там же в установке будет лежать SciTe :)
555
Дальше нам надо будет запустить nmake. Он создаст два файла — NMAKE.ERR и NMAKE.EXE. Что б rubygems долго его не искал скопируйте их в %RUBY_DIR%\bin, где %RUBY_DIR% — директория куда вы установили Ruby.
Дальше переходим в командную строку (Пуск->Выполнить->cmd). Проверяем что gem зарегистрирован в системе и работает — пишем gem --help. Если написало помощь — все хорошо.
5556

Теперь установим qtruby. Переходим в каталог (в консоли), куда мы скачали qtruby4-1.4.9-mswin32.gem и пишем команду gem install qtruby4-1.4.9-mswin32.gem. Установка должна завершится удачно так


Если написало «ошибка буфера» — значит вы скачали qtruby, который не подходит для вашей системы.
Сначала я думал что это все, но не тут то было. Потребовалось ещё одна библиотека — mingwm10.dll.
6

Скачал я её тут и сбросил в %RUBY_DIR%\bin.
Ну а теперь можем запустить наше приложение и любоваться окошком с кнопкой.
9

Удачного Вам программирования!
+1
8 августа 2008, 09:36
18
le0pard 49,2

комментарии (14)

0
tonic #
Как вы думаете, можно ли собрать установщик для windows в котором будут все необходимые файлы?
0
le0pard #
Думаю можно. Поместить в инсталятор все библиотеки и запустить nmake и gem install qtruby4 (например через bat файл)
+1
ckald #
Ммм… Занимательно!
0
ulfurinn #
0
le0pard #
Мануал и к нему подходит :)
0
ulfurinn #
Да, кроме ссылки на инсталлятор ;)
0
ulfurinn #
Когда я пробовал писать на Qt/Ruby одну штуку на базе xmpp4r, то наткнулся на ограничения потоковой модели. Где-то внутри xmpp4r было блокирующее обращение к сокету, и в момент подключения к серверу все на пару секунд подвисало, поскольку Qt здесь работает в том же системном потоке. Что с этим делать, я так и не придумал.
0
eyeofhell #
QThread вам в помощь.
0
ulfurinn #
Спасибо, кэп, но QThread в те времена не был экспортирован в Руби. Как сейчас, не знаю.
0
dborovikov #
Хм интересно, но имхо wxRuby поинтереснее будет (полегче, рисует родными для ос средствами, лицензия LGPL)
0
fl00r #
Спасибо — с установкой кьют на виндах были проблемы. Мануалы не спасали.
0
Goganchic #
Недавно заинтересовался я Qt для Ruby и обнаружил странные проблемы с кодировкой (вставляем строку из UNICODE UTF8 файла в многострочное текстовое поле (TextEdit) и видем каракули), может быть кто-нибудь тоже с таким сталкивался?
0
cblnok #
У меня была такая проблема, решилась просто: в саммом начале пишеш $KCODE=«U» и все! Мне помогло.
0
in8finity #
RubyInstaller 1.9.2 + gem install qtbindings + Cmake 2.8 + QtSDK 4.7.3 (mingw32)
Работает, но детально еще не тестировал.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.