nDiki : pl2bat

2004年11月25日 (木)

nmake で毎回 pl2bat されるのを何とかしたい

EXE_FILES でインストールするスクリプトを指定してある Makefile.PLActivePerl 上で実行して nmake をかける。 また nmake する。

するとソースを書き換えてないにもかかわらず、EXE_FILES指定ファイルの blib/script へのコピーと pl2bat の実行が行われる。 嫌な感じ。

追いかけてみると

  • UNIX上の場合 FIXIN *1blib/script にコピーされたスクリプトを上書きするため更新時刻が変更され、次の make では最新と判断される。
  • Windows上の場合 FIXIN *2blib/script にコピーされたスクリプトからバッチファイルを生成する。このためコピーされたファイルの更新時刻は、ソースと同じのまま。依存関係で指定されている Makefile の方が新しいので次の nmake でも同じ処理が繰り返される。

というわけ。コピーした後 touch するようにすればよい。

 perl -MExtUtils::Command -e touch %1
 pl2bat %1

という内容の touchpl2bat.bat を作って

 nmake FIXIN=touchpl2bat

とすればきちんと更新時刻が反映されビルドは1回だけになる。 毎回指定するのは面倒なので、MSWin32 なら自動的にそうするようにパッケージングしたいのだが nmake で他にうまく FIXIN を上書きする方法がみつからず (MY::postamble で書き出しても、WriteMakefile(macro => {FIXIN => 'touchpl2bat'}, ...) しても駄目)。


[ ExtUtils::MakeMaker ]

*1= perl -MExtUtils::MY -e "MY->fixin(shift)"

*2= pl2bat

スポンサード リンク
[ 11月25日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.049916s / load averages: 0.96, 0.62, 0.56
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker