=encoding euc-jp =head1 名前 Inline-FAQ - Inline FAQ =head1 説明 公式のInline FAQへようこそ。この場合のBとは: Formerly Answered Questions のことです。これは私自身や他の人たちがInlineメーリングリスト( inline@perl.org )に送信していた、古く、長たらしいメールを集めたものです。これは汎用的なInlineの教育のため、よく吟味され編集されてきました。これらのうちのいくつかは特定の言語に関係するかもしれません。古典的なFAQのレイアウトで以下に示します。 =head1 Inline一般 ほんの少しの内容しかないので、現在のところ全てのFAQは、この見出しの下に入っています。 =head2 .Inline や _Inline ディレクトリはどれくらい自由に使えるのですか? 私はおそらく_Inline/ キャッシュ・ディレクトリの役割について強調するべきなのでしょう。自動的にキャッシュされるので、それらは完全に自由に使うことが出来ます。いつでも私はそれらを削除します。そしてプロジェクトごとに別のものをもつことはよいことです。実際、あなたが~/.Inline/を指定しない限り、Inlineは新しい./_Inlineを作成します。あなたはそれを./.Inlineに移動することも出来ます。そしてより長い寿命を与えたり、見えないようにしたければ、それは機能し続けます。どのように[_.]Inline/ ディレクトリが利用/作成されるのかについてのルールは長く複雑です。しかし最も柔軟性があり/使いやすいように設計されています。それらを吹き飛ばすことを恐れないで下さい。それらは次の時にはすぐに元に戻ります :) =head2 SITE_INSTALLオプションにはいったい何がおこったんですか? SITE_INSTALLは逝っています。私はそれをそのまま残して、意味を変更するつもりでした。しかし人々が古いやり方を試さないように、それをそれを削除した方がいいと思いました。現在は_INSTALL_があります(しかしそれを知らないのかもしれません :)。それはInline::MakeMakerを使うことを通じて、魔法のように機能します。これは以前説明しましたが、0.40で非常に大きな変更があったので、もう一度説明する価値があるでしょう。以下に0.40でInline拡張(Inlineベースのモジュール)を'永続的に'インストールする方法を示します: 1) Inlineを使ってモジュールを作成 2) 通常の/ローカルの_Inline/ キャッシュを使ってテスト 3) h2xsによって作成されるもののような)Makefile.PLを作成 4) 'use ExtUtils::MakeMaker'を'use Inline::MakeMaker'に変更 5) あなたの'use Inline C => DATA'を'use Inline C => DATA => NAME => Foo => VERSION => 1.23'に変更 6) NAMEがあなたのパッケージ名('Foo')に対応するか、'Foo::'で 始まることを確認。 7) VERSIONが$Foo::VERSIONに対応するかを確認。これは(数値ではななく) /^\d\.\d\d$/にマッチする文字列でなければなりません。 8) perl/make/test/installでダンス (binkleyに感謝 :) Inline 0.41(あるいはその近辺)では、3と4のステップを飛ばして、単に'perl -MInline=INSTALL ./Foo.pm'と言うことが出来ます。これはInlineではないモジュールにも機能します。これはPerlモジュールをインストールする方法のデファクト・スタンダードになるでしょう(簡単な標準はありませんから)。それはMakefile.PLのパラメータ'perl -MInline=INSTALL ./Foo.pm - PREFIX=/home/ingy/perl'を可能にし、そのようにさせます。指定すれば、MANIFESTを利用できるようにもなるでしょう。 =head2 Inlineを使ったバイナリ・ディストリビューションはどのようにして作成しますか? 私はPPMバイナリ・ディストリビューションの作成とインストールの方法を理解しました;Cのコードを配布する、しないの両方で!そしてその全てをあなたと共有することを決心しました :) 注意: Inlineの将来のバージョンは、この処理を1行のコマンドで処理するでしょう。しかし今のところは、この単純な方法を使ってください。 --- Inline 0.40ディストリビューションには、Math::Simpleという簡単な拡張モジュールが入っています。理論的には、このモジュールをCPANで配布することも出来ます。それはインストールのための必要なすべてのサポートを持っています。それはInline-0.40/modules/Math/Simple/に入っています。以下にこれをCのソースコード*なしで*バイナリ・ディストリビューションに変換するためのステップを示します。 注意: このバイナリ・ディストリビューションの受取主には、PPM.pmがインストールされている必要があります。このモジュールは他のCPANモジュールも必要とします。ActivePerl(Win32,Linux,Solarisで利用可能)はこれらをすべてバンドルしています。そのためActivePerlには必要ないので、(非常に)簡単になります。 1) Inline-0.40/Math/Simple/に移動 2) Simple.pmを2つのファイルに分割 ---8<--- (Simple.pm) package Math::Simple; use strict; require Exporter; @Math::Simple::ISA = qw(Exporter); @Math::Simple::EXPORT = qw(add subtract); $Math::Simple::VERSION = '1.23'; use Inline (C => 'src/Simple.c' => NAME => 'Math::Simple::Stuff', VERSION => '1.23', ); 1; ---8<--- ---8<--- (src/Simple.c) int add (int x, int y) { return x + y; } int subtract (int x, int y) { return x - y; } ---8<--- これで1つのファイルにPerlを、もう1つにCが入っています。Cコードはサブディレクトリになければなりません。 3) 'DATA'をCのファイル名に変更したことも気をつけてください。これはCのコードが、 そこにあったのと同じように機能します。 4) 'perl Makefile.PL'を実行 5) 'make test'を実行 6) 'blib/arch/auto/Math/Simple/Stuff/Stuff.inl'からMD5キーを取得 7) 'blib/lib/Math/Simple.pm'を編集。'src/Simple.c'を(MD5キーである)'02c61710cab5b659efc343a9a830aa73'に変更 8) 'make ppd'を実行 9) 'Math-Simple.ppd'を編集。そうしれければ、AUTHORとABSTRACTを埋めてください。そして以下のように変更してください: に 10) 'tar cvzf Math-Simple.tar.gz blib'を実行 11) 'tar cvzf Math-Simple-1.23.tar.gz Math-Simple.ppd Math-Simple.tar.gz'を実行 12) 以下の手順でMath-Simple-1.23.tar.gzを配布してください: A) 'tar xvzf Math-Simple-1.23.tar.gz'を実行 B) 'ppm install Math-Simple.ppd'を実行 C) 'rm rm Math-Simple*'を実行 D) 以下のコマンドでテストしてください: perl -MMath::Simple -le 'print add(37, 42)' --- これだけです。tarの代わりにzipでも機能するはずですが、私は試したことがありません。 バイナリを受け取る人は、対応するアーキテクチャで構築されたPerlを持っていなければなりません。幸いなことにppmはこれを見つけます。 この処理には0.40-TRIAL8 (ソース無しのサポートのため)が必要です。 Cのソースコードを*つけた*バイナリ・ディストリビューションは、単にステップ2、3、6、7を省略してください。 これがあまりにも難しいようにみえるのであれば、バージョン0.41を待って、以下のようにタイプしてください: perl -MInline=makeppd Simple.pm =cut