OS X で IronRuby を動かして遊んでみようと、ちょっくら試行錯誤してみました。
まずは Mono の入手から。知らない間に 2.4 になってる。
ダウンロードページから、OS X Intel 用 Mono 2.4.2.3 Framework の dmg を落としてきて、インストールした後、動作確認。
$ vim hello.cs
1 using System;
2
3 public class Program
4 {
5 static public void Main()
6 {
7 Console.WriteLine("hogehoge");
8 }
9 }
$ mcs hello.cs
$ mono hello.exe
hogehoge
ファイル名と出力が一致していないのはおいといて、
当然動くのを確認して、次は System.Windows.Forms の動作確認。
$ vim form.cs
1 using System;
2 using System.Windows.Forms;
3
4 public class Program
5 {
6 static public void Main()
7 {
8 Application.Run(new Hello());
9 }
10 }
11
12 public class Hello : Form
13 {
14 public Hello()
15 {
16 Text = "Hello World";
17 }
18 }
$ mcs form.cs
form.cs(2,14): error CS0234: The type or namespace name `Windows' does not exist in the namespace `System'. Are you missing an assembly reference?
Compilation failed: 1 error(s), 0 warnings
shell returned 1
何にも考えずに実行したら怒られた・・・。
Mono Basics - Mono によると、
って書いてあるのに、実行してみると・・・mcs hello.cs -pkg:dotnet ( .NET 1.1 アセンブリの場合)gmcs hello.cs -pkg:dotnet (.NET 2.0 アセンブリの場合)
Package dotnet was not found in the pkg-config search path.
Perhaps you should add the directory containing `dotnet.pc'
to the PKG_CONFIG_PATH environment variable
No package 'dotnet' found
error CS8027: Error running pkg-config. Check the above output.
そんなパッケージ知らん、環境変数設定しろやと言われる。
うーん。dmg で導入したのに面倒だなぁ。
ひとまず、参照アセンブリを指定したら、コンパイルはできることがわかった。
$ mcs -r:System.Windows.Forms.dll form.cs
$ mono form.exe
ちょいと時間がかかってから、あっけなく表示された。
先ほどの PKG_CONFIG_PATH 環境変数について、dotnet.pc を含むパスを設定したらいいんちゃう?とあるので、検索。
$ find / -name "dotnet.pc"
/Library/Frameworks/Mono.framework/Versions/2.4.2.3/lib/pkgconfig/dotnet.pc
見つかったので、設定しておく。
$ vim ~/.profile
export PKG_CONFIG_PATH=/Library/Frameworks/Mono.framework/Versions/2.4.2.3/lib/pkgconfig
$ source ~/.profile
さて、もう一度やりなおし。
$ gmcs form.cs -pkg:dotnet今度はコンパイルOK。これでアセンブリの指定は必要なくなった。
ということで、本題の IronRuby へ。
Ruby の .NET 実装である IronRuby の最新は、現在 0.9 。ダウンロードページから Zip ファイルを落としてきて展開して、最初のバージョン確認。
$ mono ../ironruby-0.9.0/bin/ir.exe -v
IronRuby 0.9.0.0 on .NET 2.0.0.0
お、とりあえず動いた。
$ mono ../ironruby-0.9.0/bin/ir.exe -e 'puts "hello"'
hello
ま、動くわな。じゃ、そろそろ IronRuby で System.Windows.Forms を動かすかー。
$ vim winform.rb
1 require 'System'
2 require 'System.Windows.Forms'
3
4 Form = System::Windows::Forms::Form
5 Application = System::Windows::Forms::Application
6
7 class TestForm < Form
8 def initialize
9 self.Text = "Hello World Form"
10 end
11 end
12
13 Application.run TestForm.new
で動きましたとさ。
$ mono ../ironruby-0.9.0/bin/ir.exe winform.rb
・・・ということで、次回はもうちょっと IronRuby と Windows.Forms で遊んでみようかと。
0 件のコメント:
コメントを投稿