#概要
Mac OS X MavericksでQtをRubyから実行できるqtbindingsをインストールする方法のメモ。
qt4とqtbindingsが動くようになったことで、QtやGTK+アプリテンプレートをRailsライクに生成できるRuguiも動くようになった。
Mac/Win/Linuxで共通で動作するRuby GUI環境にはいくつかあるけれど、Qtbindingsか後述のShoesが有望そう。
#前提条件
以下が準備されていること。
- Mac OS X Maverics (でもMount Lionとかでもたぶん大丈夫)
- XCode5 (4でもたぶん大丈夫)
- homebrew
- rbenv
(Mac Portsやrvmについては未検証)
ネット上の古い情報にいろいろ惑わされてはまってしまったのだけど、実際にはgccは4.2でなくてもいいし、rubyのバージョンは1.9.3でなくても2.0で動いた。
#インストール方法
qtbindings
参考:
-
http://www.anagix.com/gijutsu-memo/gijutsu-sapoto-1/macosxlionnirbenvderuby193toqtbindings
-
brew install qt
これでQt4 (4.8.5) がインストールされる。Qtは最近5が出てスマホ対応もできたらしいので楽しみ。
brew install cmake
最大のポイントは、rubyをrbenv(またはrvm)でオプション付きでインストールすること。
RUBY_CONFIGURE_OPTS=--enable-shared rbenv install 2.0.0-p353 --keep
自分は最新のp353にしたけど、1.9あたりまでいけるのではないか。
以下のいずれかを実行して、オプション付きでコンパイルされたrubyが使用できるようにする。
-
rbenv global 2.0.0-p353
— グローバルに使用する場合 -
echo “2.0.0-p353” > .ruby-version
— 現在のディレクトリ以下のみで使用する場合 -
gem install qtbindings
以上でインストールは完了。以下のファイルを作ってruby helloworld.rb
を実行してウィンドウが表示されたら成功。
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
$VERBOSE = true; $:.unshift File.dirname($0)
require 'Qt'
a = Qt::Application.new(ARGV)
hello = Qt::PushButton.new('Hello World!', nil)
hello.resize(100, 30)
hello.show()
a.exec()
お楽しみ: https://github.com/ryanmelt/qtbindings/tree/master/examples をダウンロードしてruby run_all.rb
を実行すればデモがすべて実行される。
#rugui
https://github.com/rugui/rugui
ruguiはRubyのGUIアプリをRailsっぽく生成できる。GTK+とQtとrubygamesに対応していて、Qtは結局qtbindings経由で呼び出されている。
基本的に https://github.com/rugui/rugui のReadmeのとおりに実行すればruguiは使用できるようになる (rubygameだけはまだ動かせてない)。
Qtbindingsを実行できるようになっていれば、以下の要領でQt4アプリを生成・実行できる(デフォルトはGTK+)。
rugui -a qt <アプリ名>
cd <アプリ名>
bundle install —path bundle/vendor
bundle install
に—path bundle/vendor
を付けているのは、rbenvのgemに余分なものを追加したくないので。これを行った場合はrakeやrailsの前にbundle exec
を必ず付ける必要がある。
これでbundle exec rake run
を実行してウィンドウが表示されれば成功。
#おまけ: shoesrb
Shoes (http://shoesrb.com/) というGUIは機能は少ない代りにかなり軽くてよさそう。ただしshoes3 (https://github.com/shoes/shoes) は更新が止まっていて、JRubyベースのshoes4 (https://github.com/shoes/shoes4) はまだ作り中らしい。
Shoesにはスタンドアロンパッケージを作成する機能があるらしいのだけど最近のMac版は生成できなくなっているらしい...残念。