問題タブ [makemaker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - ExtUtils::MakeMaker カスタム ターゲット
カスタム Makefile ターゲットを ExtUtils::MakeMaker で生成する方法はありますか? たとえば、ポッドや回帰テストの実行など、開発者だけが関心を持つ特定のことをしたいとします。そのために環境変数を使用できますが、そのようなことを覚えておくのは少し扱いにくいです。代わりに次のようなものを実行できるmake devtest
と非常に便利です。
perl - `Makefile.PL` を使用して新しい make タスクを定義するにはどうすればよいですか?
生成された Makefile に、次のような lint 用の新しいタスクを追加したいと考えています。
を書いてみましたMakefile.PL
が、実行すると、結果の Makefile にはまだlint
タスクがありません。
私は CPAN ドキュメントを読んでみましたが、ほとんどのドキュメントと同様に、十分なコンテキストのないスニペットを提供するため、サブルーチンを の前または後に宣言する必要があるかどうかさえわかりませんWriteMakefile
。
Redditにも投稿されています。
c - Perl の ExtUtils::MakeMaker を使用して、XS モジュールと同じ設定を使用して実行可能ファイルをコンパイルするにはどうすればよいですか?
C ライブラリを使用する Perl XS モジュールが与えられた場合、すべてのヘッダーとライブラリの場所、コンパイラとリンカー フラグなどが正しく機能するように正しく設定された Makefile.PL があると仮定します。
ここで、同じ基礎となる C ライブラリを使用する前述の XS モジュールに小さな C プログラムを含めたいとしましょう。同じ設定とフラグでビルドされるように、ターゲット実行可能ファイルを指定する正しい、プラットフォームに依存しない方法は何ですか?
私が次のことをしたら
への引数で設定したそれらのインクルードの場所、ライブラリのリストなどを取得しませんWriteMakefile
。手動でルールを書き始めると、少なくともmake
、dmake
、およびを考慮する必要がありnmake
ます。ExtUtils::CBuilderを使用する場合、リンクするライブラリを指定する簡単な方法がわかりません。
私は何かが欠けているに違いない。ご指摘いただければ幸いです。
perl - MakeMaker は `make` 時にファイルのリストを更新します
私はMiteと呼ばれる Perl モジュールに取り組んでいます。いわば「コンパイラ」です。Moose のような宣言型 OO 構文を使用して Perl クラスを記述します。Mite は、実行されるたびにクラスをまとめるためのすべての作業を行うのではなく、ビルド時にその作業を行います。アクセサーや継承などの Perl コードを含む追加のファイルを生成します。
この余分なファイルはlib
、残りのコードと共に配置され、プロジェクトと共にリリースされます。その結果、インストール ユーザーは Mite をインストールする必要がなくなり、コードの読み込みが速くなります。
make
開発中、またはが実行されると、mite コンパイラが実行されBuild
ます。そのためmake test
、機能する./Build test
だけです。これは、MakeMakerまたはModule::Buildに特別なシムを使用することによって実現されます。
これは Module::Build では問題なく動作しますが、ExtUtils::MakeMaker は mite ファイルを認識しません。MakeMaker は、実行lib
時に何が入っているかのリストをハード コードしMakefile.PL
ます。その後、ステップは、生成されたファイルを表示される場所pm_to_lib
にコピーできません。blib
make test
この問題を回避するにはどうすればよいですか? (適切な shim をロードした後) プロセスが開発者に対して透明性を保ち、インストール ユーザーに特別な依存関係を必要としないことを願っています。
更新: これはより明確な例です。このようなプロジェクトがあるとしましょう。
あなたが実行perl Makefile.PL
し、次にmake
。このmake
ステップは、.mite.pm
ファイルごとに追加のファイルを生成するように変更されました.pm
。ステップの後、make
私が欲しいのはこれです。
に導入されたすべての新しいファイルは、 の一部として表示される場所にlib
コピーされました。私が代わりに得るのはこれです。blib/lib
make test
これは、の内容のハードコードされたリストを使用してMakefile
が生成されるためです。Makefile.PL
lib
(これは特にばかげています。私は MakeMaker を 10 年間維持しましたが、これを修正できませんでした。)
perl - (Makefile.PLの)VERSION_FROMオプションでクロスモジュールのバージョンを設定することはできますか?
いくつかのプロジェクトに同じバージョンを 1 か所でセットアップしたい。私はもう試した:
「lib/project/version.pm」:
注: AnotherProject は別のディレクトリにありますが、'use AnotherProject' でロードできます。そして、' our $VERSION="1.00" ' を含めます。
別のモジュールからバージョン文字列を渡す (取得する) ことは可能ですか?
別の方法があるかもしれませんが、私をサポートしてください。
perl - cmake プロジェクト用の MakeMaker のような Perl ライブラリはありますか?
私はしばらくの間、MySQL の C++ コードをライブラリとして使用する Perl プロジェクトをいじっています。MakeMaker と呼ばれる Perl ライブラリを使用して、MySQL ソースに依存する G++ 互換の Makefile を生成します。
次のコードは、Makefile ( Github のソース ファイル)を生成するために使用される Perl コードです。
このプロジェクトを進化させ、MySQL の代わりに MariaDB を使用したいと考えています。ただし、MariaDB は g++ ではなく cmake を使用してコンパイルされます。その結果、MariaDB に MakeMaker を使用できなくなりました。cmake を使用してコンパイルされたソース用の同様のツールがあるかどうかを知りたいです。そのようなものが存在する場合、別の方法で Perl プロジェクトを MySQL ソースにリンクするという別のオプションがあります。
編集:これまでのところ、そのようなツールがPerlに存在するかどうかわからないため、何も試していません(Web上でその痕跡は見つかりませんでしたが、適切なキーワードがない可能性があります)。そうでない場合、以前のコードでMySQLで行われたように、PerlまたはC++コードでMariaDBソースを使用するという当初の目標をどのように達成できますか?
perl - サブモジュールを含むperl MakeMakerメイクファイル
3 つのサブモジュールを含む perl モジュールを作成しました。MakeMakerでmakefileを作りたいのですが、困っています。
私のモジュールの構造は /module.pm と /module/sub.pm です。
makefile を作成すると、module.pm ファイルのみが含まれます。サブモジュールも含まれるようにメイクメーカーに書き込む必要があるパラメーターはどれですか?
どうもありがとうございました。
perl - ExtUtils::MakeMaker の PMLIBPARENTDIRS の機能は何ですか?
私たちのプロジェクトの 1 つに、ExtUtils::MakeMakerMakefile.PL
に基づいて継承された古いものがあり、次のものが含まれています。
このPMLIBDIRS
オプションはドキュメント(上記のリンク)で明確に説明されてPMLIBPARENTDIRS
いますが、私が見つけることができるドキュメントはありません。ただし、ソース コードで 2 回言及されていますが、機能的な方法 (つまり、構成とドキュメント) では言及されていません。
オプションをコメント アウトしPMLIBPARENTDIRS
ても、パッケージのビルド時にすぐに明らかな悪影響が及ぶことはありません。
このパラメーターは何をしますか? それとも時代遅れですか?
perl - perl MakeMaker モジュールで make ターゲットを無効にするにはどうすればよいですか?
ExtUtils::MakeMaker を使用して perl モジュールをパッケージ化していますが、makefile でシステムのどこかにファイルをコピーしたくありません。「インストール」ターゲットを無効にし、代わりに、このメイクファイルが「make install」と入力したときに「make dist」のみをサポートすることをユーザーに伝える必要があります。