Inline-0.43 > Inline-FAQ

名前

Inline-FAQ - Inline FAQ

説明

公式のInline FAQへようこそ。この場合のFAQとは:

    Formerly Answered Questions

のことです。これは私自身や他の人たちがInlineメーリングリスト( inline@perl.org )に送信していた、古く、長たらしいメールを集めたものです。これは汎用的なInlineの教育のため、よく吟味され編集されてきました。これらのうちのいくつかは特定の言語に関係するかもしれません。古典的なFAQのレイアウトで以下に示します。

Inline一般

ほんの少しの内容しかないので、現在のところ全てのFAQは、この見出しの下に入っています。

.Inline や _Inline ディレクトリはどれくらい自由に使えるのですか?

私はおそらく_Inline/ キャッシュ・ディレクトリの役割について強調するべきなのでしょう。自動的にキャッシュされるので、それらは完全に自由に使うことが出来ます。いつでも私はそれらを削除します。そしてプロジェクトごとに別のものをもつことはよいことです。実際、あなたが~/.Inline/を指定しない限り、Inlineは新しい./_Inlineを作成します。あなたはそれを./.Inlineに移動することも出来ます。そしてより長い寿命を与えたり、見えないようにしたければ、それは機能し続けます。どのように[_.]Inline/ ディレクトリが利用/作成されるのかについてのルールは長く複雑です。しかし最も柔軟性があり/使いやすいように設計されています。それらを吹き飛ばすことを恐れないで下さい。それらは次の時にはすぐに元に戻ります :)

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を利用できるようにもなるでしょう。

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を埋めてください。そして以下のように変更してください:

    <CODEBASE HREF="" />

    <CODEBASE HREF="./Math-Simple.tar.gz" />

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