英語フランス語スペイン語

Ad


OnWorksファビコン

h2xs - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーター上の OnWorks 無料ホスティング プロバイダーで h2xs を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの 2 つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド hXNUMXxs です。

プログラム:

NAME


h2xs - .h C ヘッダー ファイルを Perl 拡張子に変換します

SYNOPSIS


h2xs [OPTIONS ...] [ヘッダファイル ... [extra_libraries]]

h2xs -h|-?| - 助けて

DESCRIPTION


h2xs C ヘッダー ファイルから Perl 拡張機能を構築します。 拡張機能には関数が含まれます
これは、C ヘッダーにある #define ステートメントの値を取得するために使用できます。
ファイル。

  モジュール名 拡張機能の名前に使用されます。 module_name がそうでない場合
指定すると、最初のヘッダー ファイルの名前が使用され、最初の文字が付けられます。
大文字。

拡張機能に追加のライブラリが必要な場合は、それらをここに含める必要があります。 拡張子
Makefile.PL は、ライブラリが実際に存在するかどうか、およびライブラリがどのように存在するかを確認します。
ロードされる必要があります。 追加のライブラリは、-lm -lposix などの形式で指定する必要があります。
cc コマンドラインと同様です。 デフォルトでは、Makefile.PL は次のファイルを検索します。
ライブラリのパスは構成によって決定されます。 そのパスは引数を含めることで拡張できます
フォームの -L/別の/ライブラリ/パス 追加ライブラリ引数で。

その名前にもかかわらず、 h2xs スケルトンの純粋な Perl モジュールを作成するために使用することもできます。 を参照してください。
-X オプションを選択します。

OPTIONS


-A, --autoload を省略
すべての自動ロード機能を省略します。 これは以下と同じです -c しかしまた、
.pm ファイルの「use AutoLoader」ステートメント。

-B, - ベータ版
アルファ/ベータ形式のバージョン番号を使用します。 そうでない場合、バージョン番号は「0.00_01」になります。
-v 指定されています。

-C, --省略-変更
の作成を省略します。 変更 ファイルを作成し、POD テンプレートに HISTORY セクションを追加します。

-F, --cpp-flags=追加フラグ
関数のヘッダーをスキャンするときに C プリプロセッサに指定する追加のフラグ
宣言。 これらのオプションを生成されたファイルに書き込みます。 メイクファイル.PL のためにペンを持つ時間も見つけています。

-M, --機能マスク=レギュラー 表現
処理する関数/マクロを選択します。

-O, --上書きOK
既存の拡張機能ディレクトリを上書きできるようにします。

-P, --ポッドを省略
自動生成されたスタブ POD セクションを省略します。

-X, --XS を省略
XS部分は省略します。 スケルトンの純粋な Perl モジュールを生成するために使用されます。 「-c」と「-f」は
暗黙的に有効になります。

-a, --gen-アクセサー
構造体と共用体の要素ごとにアクセサ メソッドを生成します。 生成された
メソッドは要素名に基づいて名前が付けられます。 の現在値を返します
追加の引数なしで呼び出された場合は要素。 要素をに設定します
追加の引数を指定して呼び出された場合は、指定された値 (そして新しい値を返します)。
埋め込まれた構造体と共用体は、完全なものではなくポインタとして返されます。
呼び出しの連鎖を容易にするための構造。

これらのメソッドはすべて、構造体の Ptr 型に適用されます。 さらにXNUMXつの方法
構造体タイプ自体、Ptr タイプを返す「_to_ptr」用に構築されます。
同じ構造体と、新しい構造体を構築して返す「新しい」メソッドを指します。
構造体、ゼロに初期化されます。

-b, --互換バージョン=バージョン
指定された Perl バージョンと下位互換性のある .pm ファイルを生成します。

バージョン 5.6.0 より前の場合、変更は次のとおりです。
- 'our' は使用しません (代わりに 'use vars' を使用します)
- 「使用に関する警告」はありません

使用している Perl のバージョンよりも高い互換性バージョンを指定すると、
h2xs を実行しても効果はありません。 指定しない場合、h2xs はデフォルトで互換性を持ちます。
h2xs の実行に使用している Perl のバージョン。

-c, --定数を省略
.xs ファイルから「constant()」を省略し、.xs ファイルから対応する特殊な「AUTOLOAD」を省略します。
.pm ファイル。

-d, -デバッグ
デバッグ メッセージをオンにします。

-e, --省略列挙=[レギュラー 表現]
If レギュラー 表現 が指定されていない場合は、C で定義されているすべての定数をスキップします。
列挙。 それ以外の場合は、列挙型で定義されている定数のみをスキップします。
名前が一致する レギュラー 表現.

Since レギュラー 表現 はオプションです。このスイッチの後に at が続くことを確認してください。
省略した場合は少なくとも XNUMX つの他のスイッチ レギュラー 表現 いくつかの保留中の議論があります
ヘッダファイル名など。 これで結構です:

h2xs -e -n モジュール::Foo foo.h

これはダメです:

h2xs -n モジュール::Foo -e foo.h

後者では、foo.h は次のように解釈されます。 レギュラー 表現.

-f, - 力
ヘッダーが見つからない場合でも、ヘッダーの拡張機能を作成できるようにします。
標準のインクルードディレクトリ。

-g, - グローバル
静的データを .xs ファイルに安全に保存するためのコードを含めます。 何もしない拡張機能
静的データを使用する場合は、このオプションを無視できます。

-h, -?, - 助けて
この h2xs の使用法、ヘルプ、バージョンを出力して終了します。

-k, --省略定数関数
「const」として宣言された関数の引数については、生成される関数の const 属性を省略します。
XSコードです。

-m, --gen-tied-var
実験的: ヘッダー ファイルで宣言された変数ごとに、perl を宣言します。
同じ名前の変数が C 変数に魔法のように結び付けられます。

-n, - 名前=モジュール名
拡張子に使用する名前を指定します (例: -n RPC::DCE)

-o, --不透明-再=レギュラー 表現
正規表現で一致する C 型には、次のような場合でも「不透明」データ型を使用します。
これらの型は、タイプマップの型と「typedef」に相当します。 使用すべきではありません
無し -x.

これは、たとえば、整数と同等の「typedef」型は次のような場合に役立つ可能性があります。
は OS 関連のハンドルを表しており、OO 方式でこれらのハンドルを操作したい場合があります。
「$handle->do_something()」のように。 「-o」を使用します。 すべてを処理したい場合は、
「typedef」された型を不透明型として扱います。

一致する型は白塗りされます (カンマを除き、カンマの前に空白はありません)
それらと、間に空白のない複数の「*」)。

-p, --削除プレフィックス=接頭辞
Perl 関数名から削除するプレフィックスを指定します。例:
-p sec_rgy_ XS を設定します。 プレフィックス キーワードを追加し、関数からプレフィックスを削除します
これらは「constant()」メカニズムを介して自動ロードされます。

-s, --const-subs=サブ1、サブ2
を使用して自動ロードするのではなく、指定されたマクロの Perl サブルーチンを作成します。
絶え間ない() サブルーチン。 これらのマクロの戻り値の型は次のとおりであると想定されます。 チャリオット *,
例: -s sec_rgy_wildcard_name,sec_rgy_wildcard_sid。

-t, --デフォルトタイプ=type
内部タイプを指定します。 絶え間ない() マクロに使用されるメカニズム。 デフォルト
IV (符号付き整数) です。 現在、ヘッダーのスキャン中にすべてのマクロが検出されました
プロセスはこのタイプであると想定されます。 「h2xs」の将来のバージョンでは、
知識に基づいた推測を行う能力。

--新しいテストを使用する
日時 --互換バージョン (-b) が存在する場合、生成されたテストは「Test::More」を使用します。
5.6.2 より前のバージョンのデフォルトである「Test」ではなく。 「テスト::詳細」は
生成された「Makefile.PL」のPREREQ_PMに追加します。

--古いテストを使用
古い「Test」モジュールを使用するテスト コードの生成を強制します。

--スキップエクスポーター
「エクスポーター」を使用したり、シンボルをエクスポートしたりしないでください。

--skip-ppport
「Devel::PPPort」は使用しないでください。古いバージョンへの移植性がありません。

--スキップ-オートローダー
モジュール「AutoLoader」は使用しないでください。 しかし、 絶え間ない() 関数と「サブ」
定数の場合は「AUTOLOAD」。

--skip-strict
プラグマ「strict」は使用しないでください。

--スキップ警告
プラグマ「warnings」は使用しないでください。

-v, - バージョン=バージョン
この拡張機能のバージョン番号を指定します。 このバージョン番号は
テンプレート。 デフォルトは 0.01 で、「-B」を指定した場合は 0.00_01 です。 バージョン
数値で指定する必要があります。

-x, --autogen-xsubs
ヘッダー ファイル内の関数宣言に基づいて XSUB を自動的に生成します。 の
パッケージ「C::Scan」をインストールする必要があります。 このオプションを指定すると、
ヘッダー ファイルは「NAME1,NAME2」のようになります。 この場合、NAME1 が代わりに使用されます。
指定された文字列ですが、XSUB はファイルに含まれる宣言に対してのみ出力されます
名前2。

関数の引数/戻り値のタイプによっては、次のような結果が生じる可能性があることに注意してください。
手動編集が必要な XSUB 宣言/タイプマップ エントリ。 そのようなオブジェクトは、
ポインター (「long long」など)、関数へのポインター、またはポインターとの間で変換することはできません。
配列。 「制限事項」のセクションも参照してください。 -x".


# デフォルトの動作、拡張子は Rusers です
h2xs rpcsvc/ruse​​rs

# 同じですが、拡張子は RUSERS です
h2xs -n RUSERS rpcsvc/ruse​​rs

# 拡張子はrpcsvc::rusersです。 まだ見つかります
h2xs rpcsvc::rusers

# 拡張子はONC::RPCです。 まだ見つかります
h2xs -n ONC::RPC rpcsvc/ruse​​rs

# constant() または AUTOLOAD を使用しない場合
h2xs -c rpcsvc/ruse​​rs

# RPC という名前の拡張機能のテンプレートを作成します
h2xs -cfn RPC

# 拡張子はONC::RPCです。
h2xs -cfn ONC::RPC

# 拡張機能は、XS コードを含まない純粋な Perl モジュールです。
h2xs -X My::モジュール

# 拡張子は Lib::Foo で、少なくとも Perl5.005_03 では動作します。
# h2xs が見つけることができるすべての #define と enum に対して定数が作成されます
# foo.h で。
h2xs -b 5.5.3 -n Lib::Foo foo.h

# 拡張子は Lib::Foo で、少なくとも Perl5.005_03 では動作します。
# 定数はすべての #define に対して作成されますが、列挙型に対してのみ作成されます
# 名前が「bar_」で始まらないもの。
h2xs -b 5.5.3 -e '^bar_' -n Lib::Foo foo.h

# Makefile.PL はライブラリ -lrpc を検索します。
# 追加ディレクトリ /opt/net/lib
h2xs rpcsvc/ruse​​rs -L/opt/net/lib -lrpc

# 拡張子はDCE::rgynbaseです
# プレフィックス「sec_rgy_」は Perl 関数名から削除されます
h2xs -n DCE::rgynbase -p sec_rgy_ dce/rgynbase

# 拡張子はDCE::rgynbaseです
# プレフィックス「sec_rgy_」は Perl 関数名から削除されます
# 個のサブルーチンが sec_rgy_wildcard_name に対して作成され、
# sec_rgy_wildcard_sid
h2xs -n DCE::rgynbase -p sec_rgy_ \
-s sec_rgy_wildcard_name,sec_rgy_wildcard_sid dce/rgynbase

# perl.h で定義せずに関数宣言を使用して XS を作成する
# perl.h から見えます。 拡張機能の名前は perl1 です。
# perl.h をスキャンする場合、 -DEXT=extern -DdEXT= -DINIT(x)= を定義します
# 文字列がシェルに渡されるため、以下に余分なバックスラッシュがあります。
# Perl ヘッダー ファイルを含むディレクトリは
# パスを含めるために自動的に追加されます。
h2xs -xAn perl1 -F "-DEXT=extern -DdEXT= -DINIT\(x\)= perl.h

# perl.h から見える proto.h の関数宣言と同じです。
h2xs -xAn perl2 perl.h,proto.h

# 同じですが、/^av_/ に一致する関数のみを選択します
h2xs -M '^av_' -xAn perl2 perl.h,proto.h

# 同じですが、SV* などを「不透明」タイプとして扱います
h2xs -o '^[S]V \*$' -M '^av_' -xAn perl2 perl.h,proto.h

拡張 ベース on .h & .c ファイル
いくつかの機能を実装する C ファイルがあり、対応する
ヘッダファイル。 この機能にアクセスできるようにする拡張機能を作成する方法
パール? 以下の例では、ヘッダー ファイルが インターフェース_シンプル.h &
インターフェース_ヘアリー.hそして、perl モジュールの名前を「Ext::Ension」にしたいとします。 必要な場合は
一部のプリプロセッサ ディレクティブや外部ライブラリとのリンクについては、フラグ「-F」を参照してください。
「OPTIONS」の「-L」と「-l」。

ディレクトリ名を見つけます
h2xs のダミー実行から始めます。

h2xs -Afn Ext::Ension

このステップの唯一の目的は、必要なディレクトリを作成し、それをユーザーに知らせることです。
これらのディレクトリの名前。 出力から、次のディレクトリがあることがわかります。
拡張子は 拡大.

C ファイルをコピーする
ヘッダー ファイルと C ファイルをこのディレクトリにコピーします 拡大.

拡張機能を作成する
h2xs を実行し、古い自動生成ファイルを上書きします。

h2xs -Oxan Ext::Ension インターフェイス_simple.h インターフェイス_ヘアリー.h

h2xs はヘッダー ファイルを探します After 拡張機能ディレクトリに変更すると、検索されます。
ヘッダーファイルはOKです。

アーカイブとテスト
いつものように、走ります

cd 拡張子/拡張子
perl Makefile.PL
距離を作る
make
テストを行う

ヒント
できるだけ早く「make dist」を行うことが重要です。 こうすれば簡単にできます
マージ(1) 「.h」ファイルを編集する場合は、自動生成ファイルへの変更。
h2xsを再実行します。

生成されたドキュメント内のドキュメントを編集することを忘れないでください。 .pm ファイルにソフトウェアを指定する必要があります。

自動生成されたファイルはスケルトンとしてのみ考慮してください。より良いインターフェイスを発明できる可能性があります。
h2xs が推測できるものよりも。

このセクションはガイドラインとしてのみ考慮してください。h2xs の他のオプションの方が適している場合もあります。
あなたの要望。

ENVIRONMENT


環境変数は使用されません。

onworks.net サービスを使用してオンラインで h2xs を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad