minilla を使って cocoa な xs module を書く
環境を作るにはまず、
minil new -p XS Cocoa-Hoge
をしたのち
builder/MyBuilder.pm で build するようにします
package builder::MyBuilder; use strict; use warnings; use parent qw(Module::Build); use File::Copy; sub new { my ($self, %args) = @_; $self->SUPER::new( %args, extra_compiler_flags => ['-Wall'], extra_linker_flags => ['-framework', 'Foundation'], ); } sub compile_c { my ($self, $file, %args) = @_; (my $m_file = $file) =~ s/\.c$/.m/; move($file, $m_file) or die $!; $self->SUPER::compile_c($m_file, %args); } 1;
builder っていう名前の件は Perlの話題を日本語で – Lingr 辺りを見るといいようですね。
compile_c の件は Mac-ExtAudioFile/Build.PL at master · typester/Mac-ExtAudioFile · GitHub を見るといいですね。
次に minil.toml に builder::MyBuilder で build するよう指定します
[build] build_class = "builder::MyBuilder" [no_index] directory = ['t', 'xt', 'inc', 'share', 'eg', 'examples', 'author', 'builder']
みたいな感じに builder は index されないように指定するといいようですね。
こういう感じで git に commit したら
minil build
で Build.PL とかを生成されると良い感じに置き換わってるようです。
後は Cocoa/Hoge.xs に objective-c とか書いていって minil build とか test とかすればいい感じです。
cocoa な xs な書き方は Hacking Mac OSX Cocoa API from Perl とか typester (Daisuke Murase) · GitHub の cocoa namespace なやつを見るといいですね。
色々教えてくれた、 typester 先生、 songmu 先生ありがとうございました。
これで minilla で cocoa な module が書けて捗りそうですね。