8

C ライブラリを使用する Perl XS モジュールが与えられた場合、すべてのヘッダーとライブラリの場所、コンパイラとリンカー フラグなどが正しく機能するように正しく設定された Makefile.PL があると仮定します。

ここで、同じ基礎となる C ライブラリを使用する前述の XS モジュールに小さな C プログラムを含めたいとしましょう。同じ設定とフラグでビルドされるように、ターゲット実行可能ファイルを指定する正しい、プラットフォームに依存しない方法は何ですか?

私が次のことをしたら

sub MY::postamble {
    return <<FRAG;
target$Config{exe_ext}: target$Config{obj_ext}

target$Config{obj_ext}: target.c

FRAG
}

への引数で設定したそれらのインクルードの場所、ライブラリのリストなどを取得しませんWriteMakefile。手動でルールを書き始めると、少なくともmakedmake、およびを考慮する必要がありnmakeます。ExtUtils::CBuilderを使用する場合、リンクするライブラリを指定する簡単な方法がわかりません。

私は何かが欠けているに違いない。ご指摘いただければ幸いです。

4

2 に答える 2

2

EU::MM は実行可能ファイルの作成方法を知りません。これを行う必要がある場合は、さまざまなコンパイラ ツールチェーンを考慮する必要があります。私はこれを少なくとも一度は行ったことがありますが、完全に移植可能であるとは主張していません (十分に移植可能です)。

長期的な解決策は、適切なコンパイル フレームワークです。私はそれに取り組んできましたが、かなり簡単ではありません。

于 2014-09-01T20:36:53.347 に答える