モジュール作成
いい加減、makefileのついたモジュール作りたいなーと思って始めた。モジュール整理。結構面倒だった...orz
最終的にはテストが楽しくて、面白かったけど。今後、忘れそうな事などまとめてメモ!
まずはインストール!
cpan> install Module::Starter cpan> install Module::Starter::PBP cpan> install Module::Starter::Smart
※通常だとモジュールの追加が出来ないので、追加できるようにするためにModule::Starter::Smartも一緒にインストールする。
次にターミナル上で以下のコマンドを入力。名前とメルアドの設定をする。
$ perl -MModule::Starter::PBP=setup Please enter your full name : UnyaUnya Please enter an email address : unyaunya@mail.com
すると、自分のホームディレクトリ以下~/.module-starterが作成される。
Smartを有効にするために、このファイルに以下を追記
plugins: Module::Starter::PBP Module::Starter::Smart
モジュールを作ってみる
$ module-starter --module=My::UnyaUnya
ちなみに、あるやつにモジュール追加したいとき
$ module-starter --module=My::UnyaUnya2 --distro=My
できたら、ビルドできるかどうか、テストしてみる。
$ cd My-UnyaUnya $ perl Build.PL $ perl Build $ perl Build test
これがうまくいかないときは、Test::Pod::Coverage、Test::Perl::Criticをインストールする。また、私の場合は.pmファイルの$VERSION = qv('0.0.3') を our $VERSION = qv('0.0.3')にする必要があった。
で、ここまで出来たら、後はがつがつモジュール書くだけ!
ビルドに成功したら、パッケージング
Build.PLのrequiresの項目に使っているモジュールを追加する。
requires=>{ 'Test::More' => 0, 'version' => 0, 'Class::Accessor' => 0, },
で、あとは、Makefile.PLの中身を変更
use lib qw(lib); use Module::Build::Compat; Module::Build::Compat->run_build_pl(args => \@ARGV); Module::Build::Compat->write_makefile(build_class => 'Module::Build');
最後にMANIFEST.SKIPを作成
\bRCS\b \bCVS\b ^MANIFEST\. ^Makefile$ ^Build$ ^Build.bat$ ^_build/ \.(bak|tdy|old|tmp)$ ~$ ^blib/ ^pm_to_blib \.cvsignore \.gz$
配布ファイル一覧を示すMANIFESTファイルを作成
$ perl Build manifest
準備が出来たら以下のコマンド
$ perl Makefile.PL $ make $ make test $ make install
私はここで、インストールする場所を指定したいので、以下のコマンド
$ perl Makefile.PL PREFIX=/home/unya/Modules/
また、@INCにこの場所を参照させたい場合は、~/.bashrcに以下を追記
PERL5LIB=/home/unya/Modules/share/perl/5.8.4/;export PERL5LIB
パッケージング
$ perl Build dist