nDiki : nmake
Related term
2001年6月7日 (木)
■ 14:30 GNU Autotools + Visual C++

投げ。とりあえず nmake 用 Makefile を書いてお茶をにごす。
- Module::Build でソースパッケージング (2005-08-24)
- SCons は GNU Autotools のかわりになるか (2005-04-20)
- 今日のさえずり - 背後に立たれていても気がつかないという恐れ (2008-09-09)
- ActivePerl で Ming (2005-02-23)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
2004年7月23日 (金)
■ プロジェクト関連ドキュメントを TeX で

現在進行中のプロジェクトの一つがそろそろ大詰め。 ドキュメント書きに突入。 前回までは過去の方法を踏襲して MS Word ベースだったのだが、自分がマネージャになった今期からは全面的に TeX ベースへ移行させる。
- Subversion で管理
- プロジェクト用 texmf は外部定義 (svn:externals)を使用して共有
- Linux、Windows のどちらでもビルドできるように
を用意。 Makefile は時間がなかったので GNUmakefile と Makefile を作って Linux 用と Windows 用の両方作ったのだが、後々面倒なので一本化したい。
- pLaTeX + hyperref + dvipdfmx で PDFにしおりを (2005-04-15)
- ActivePerl で Ming (2005-02-23)
- Debian GNU/Linux で Dropbox (2008-09-16)
- 日本語ファイル名どんとこい (2005-03-07)
- Windows でも Linux でも動くタスク管理ツール Task Coach (2006-01-12)
2004年7月24日 (土)
■ Windows 用 GNU Make

Windows だと nmake がやっぱり主流だろうか。 しかし GNU Make とは違う点が多く、使い分けるのも面倒。 かといって Ant というのも面倒。
ということで気軽に使える Windows 用の GNU Make を探す。 Cygwin 版は共同作業者に入れてもらうのが面倒なので却下(Makefile から呼ばれるコマンド群もLinuxと同様のものが入るのでこちらの方が便利といえば便利ではあるのだが)。
MinGW版が 3.80 をポーティングしているし単体でも動きそうなのでこれを試してみることにする。
mingw32-make-3.80.0-3.exe を取ってきて実行。make そのものだと思っていたがマニュアル等を含むインストーラだった。 一旦インストールして、mingw32-make.exe をコピーしてアンインストール。 mingw32-make.exe 単体で動作するので取り扱いが楽でよい(必要なら make.exe にでもリネーム)。
Windows 特有の問題があるかどうかは今後使ってみてチェックだな。
- ActivePerl で Ming (2005-02-23)
- X-Deep/32 Xサーバ (2005-03-30)
- Module::Build でソースパッケージング (2005-08-24)
- OpenSSH for Windows (2004-08-05)
- SCons は GNU Autotools のかわりになるか (2005-04-20)
2004年11月25日 (木)
■ nmake で毎回 pl2bat されるのを何とかしたい

EXE_FILES でインストールするスクリプトを指定してある Makefile.PL を ActivePerl 上で実行して nmake をかける。 また nmake する。
するとソースを書き換えてないにもかかわらず、EXE_FILES指定ファイルの blib/script へのコピーと pl2bat の実行が行われる。 嫌な感じ。
追いかけてみると
- UNIX上の場合 FIXIN *1 が blib/script にコピーされたスクリプトを上書きするため更新時刻が変更され、次の make では最新と判断される。
- Windows上の場合 FIXIN *2 は blib/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'}, ...) しても駄目)。
- Module::Build でソースパッケージング (2005-08-24)
- ActivePerl で Ming (2005-02-23)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- SCons は GNU Autotools のかわりになるか (2005-04-20)
2005年2月23日 (水)
■ ActivePerl で Ming

ActivePerl で Ming を使えるようにしておきたい。
@ Visual Studio で
Ming 0.3 beta1 のソースパッケージには Visual Studio 6.0 用のプロジェクトファイルが含まれている。 Cygwin の Bison と flex があればライブラリをビルドできるようだ。 横着して Linux 側で bison と flex で生成したファイルをコピーして(それから unistd.h をインクルードしている部分を消して)、ビルドしてみたところ一応 lib ファイルは作成成功。
しかし ActivePerl 用にPerl モジュールの make は失敗。
@ MinGW + nmake で ActivePerl のモジュールをビルドできるらしい
調べたところ ExtUtils::FakeConfig を使うと Visual Studio が無くても MinGW + nmake でモジュールをビルドできるらしい(全てではないと思うが)。
ということで Ming を MinGW でビルドした後、そのまま ActivePerl 用モジュールの作成まで持ち込むことにしてみる。
@ MinGW + MSYS + GnuWin32 で開発環境を構築
コンパイルに必要な環境を MinGW で、configure に必要な環境を MSYS で用意する。
@ bison は GnuWin32 で
Ming のビルドに必要な Bison は MinGW、MSYS のインストーラに含まれていない。 bison-1.875.0-2003.02.10-1.exe というのが別途あるがうまく動かない。
ソースパッケージ(bison-2.0.tar.gz、bison-1.875.tar.gz)からはビルドできず。 MinGW/MSYSのプロジェクトにある bison-1.875-2003.02.10-1-src.tar.gz はビルドできるものの make check が通らない。
とうことで GnuWin32 の bison-1.875-4.exe (インストーラ形式)をインストール。 c:/usr/local/GnuWin32 にインストールした後、MSYS の /etc/fstab で /GnuWin32 にマウントし、/GnuWin32/bin に PATH を通しておく。
@ flex はソースパッケージから
flex-2.5.4a.tar.gz を展開して
./configure; make; make check; make install
インストール時ハードリンクが作れなくてエラーがでているようだが無視。
@ zlib (Ming で必要)
MSYS 上でビルドしてインストール。zlib-1.2.2.tar.gz を展開して
./configure; make; make check; make install
@ LibUnGif for Windows (Ming で必要)
MSYS 上でビルドしてインストール。 libungif-4.1.0b1-src.zip を展開して
rm config.cache; config.h内の-DHAVE_VARARGS_Hをコメントアウト。 ./configure; make; make install
make check はエラーが出るが無視。
@ libpng (Ming で必要)
MSYS 上でビルドしてインストール。libpng-1.2.8-config.tar.gz を展開して
CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure make; make check; make install
@ いよいよ Ming
MSYS 上でビルド。ming-0.3beta1.tar.gz を展開して
CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib make static
@ ActivePerl 用モジュール作成
ExtUtils::FakeConfig と PPM::Make で Ming の SWF PPM パッケージを作成する。 (MSYSのシェルではなく)コマンド プロンプトを開いて、Mingソースパッケージの中の perl_ext に移動。 MSYS、MinGW、nmake にPATHを通しておく。
それから Makefile.PL の実行で -lz を発見できないので、libz.a を Makefile.PL と同じディレクトリにコピーしてしまう(-L/usr/local/lib を指定しても効かなかったので)。 libpng.a、libungif.a も同じくコピーしておく。
Makefile を作成。Makefile.PL では -lz しか指定していないが、libpng と libungif も必要なのでコマンドラインオプションで指定する。ExtUtils::FakeConfig の Config_m を使用して MinGW を使用するようにする。
perl -MConfig_m Makefile.PL LIBS="-lpng -lungif -lz"
ここで生成される Makefile の中で libperl58.a を指定している部分があるが、ActivePerl では perl58.lib になるので、エディタで書き換え。 後はいつも通り
nmake nmake test make_ppm
で PPM パッケージ作成完了。
簡単なPerlプログラムでSWFファイルが作れる事を確認。 やった。
- Module::Build でソースパッケージング (2005-08-24)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- OpenSSH for Windows (2004-08-05)
- 自前 PPM リポジトリの管理 (2006-07-03)
- Windows 用 GNU Make (2004-07-24)
2005年8月24日 (水)
■ Module::Build でソースパッケージング

@ ExtUtils::MakeMaker
私が Perl が好きな理由の一つに、標準でExtUtils::MakeMakerという Makefile ジェネレータがついているところである。これを使って Makefile.PL を書くと
perl Makefile.PL make manifest make make test make dist
で <pacakge>-<versionno>.tar.gz というソースパッケージを作ることができ、
tar zxvf <pacakge>-<versionno>.tar.gz cd <pacakge>-<versionno> perl Makefile.PL make make test make install
という手順でインストールする事ができるようになる。 パッケージの作り方が確立されているので、容易に新しいパッケージを開発しはじめられる。
逆に Java でプログラムを書くのが億劫なのは、このあたりの準備が面倒だからである。 Ant を使っても結局ここら辺自分でやらなければならないし。
@ ちょっとしたアーカイブの作成
ちょっとしたパッケージを作りたいと思うことは良くある。 例えばいくつかのデータファイルと、READMEファイルなんかをひとまとめにしてアーカイブにするとか。
本当にちょっとしたであれば、手動でアーカイブすれば良いのだが、
- アーカイブしたいファイル群がバージョン管理下にあって、CVS ディレクトリや .svn ディレクトリがある (除外してアーカイブする必要がある)
- 同じディレクトリにある、作業用のファイルはアーカイブしたくない (除外してアーカイブする必要がある)
- アーカイブする前に、チェック用のリグレッションテスト一式を走らせたい (リグレッションテストをかけられるようにする)
- UNIX でも Windows でもアーカイブ化できるようにしたい。
あたりを考慮しなければならない時は面倒くさくなってくる。
自動化としては
- シェルスクリプト/バッチファイルを書く
- Makefile を書く
- GNU Autotools を使う
あたりがぱっと思い浮かぶ。 しかし、最初の2つは毎回同じようなものを書くのが面倒だし保守もしにくい。 GNU Autotools はちょっとごっつすぎだし、Windows での環境構築も面倒。
@ ExtUtils::MakeMaker の欠点
ということで最初は ExtUtils::MakeMaker を使うという線で考えてみた。 もともと Perl モジュール用で汎用用途にはちょっと邪魔な振舞いもあるが、使えないことはないと思う。 しかし make (GNU Make あるいは nmake など) に依存しているという欠点がある。
@ Module::Build で
ということで ExtUtils::MakeMaker の代替である Module::Build ベースで汎用用途に使えないか検討してみた。こちらは pure Perl で make を必要としない。
Module::Build も Perl モジュールビルドにあわせた振舞いがあるものの、ちょっとカスタマイズすれば使えそうだ。 で、いろいろいじった結果、次のような感じにすると使いやすそうだ。
use Module::Build;
my $class = Module::Build
->subclass(class => 'NonmoduleBuilder',
code => q{
# Don't make blib
sub ACTION_code {};
# Don't make blib
sub ACTION_docs {};
# Don't make META.yml
sub ACTION_distmeta {
# no warning on ACTION_distdir
$_[0]->{metafile} = 'MANIFEST';
};
# Don't add MEATA.yml to MANIFEST
sub ACTION_manifest {
$_[0]->{metafile} = 'MANIFEST',
$_[0]->SUPER::ACTION_manifest(@_);
};
});
# Set your archive name and version.
$class->new(dist_name => 'mypackage',
dist_version => '1.0.2',
)->create_build_script;
カスタマイズした部分は以下(Module::Build 0.26 で動作確認)。
- Perl モジュールビルドに特有の blib ディレクトリを作らないようにする。
- META.yml を生成しないようにし、アーカイブに含まれないようにする。
上記のようなファイルを Build.PL という名前で作っておけば
perl Build.PL ./Build manifest ./Build ./Build test ./Build dist
等として、アーカイブ作成が容易にできるようになる。
しばらくこの方法でいろいろ試してみることにしてみよう。
- SCons は GNU Autotools のかわりになるか (2005-04-20)
- ActivePerl で Ming (2005-02-23)
- nmake で毎回 pl2bat されるのを何とかしたい (2004-11-25)
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- bundle を作成して Perl モジュールをまとめてインストール。 (2004-10-21)
■よく検索されるキーワード
torrent(174) expressions(80) 竹内まりや(62) ドラマ(27) x31(25) linux(24) windows(23) 壁紙(22) 動画(21) 手帳(21) wiki(20) perl(20) 画像(19) debian(19) 蘇える金狼(18) 吉瀬美智子(18) mp3(16) 使い方(15) 秋葉原(14) thinkpad(14) ダウンロード(14) usb(14) 竹内まりあ(13) バッグ(13) ヨドバシカメラ(12) リフィル(12) ubuntu(12) ノート(11) xp(11) ヨドバシ(11) 作り方(11) skype(10) so905ics(10) nikon(10) ほぼ日手帳(10) porter(10) 無印(9) cvs(9) サンプル(9) 生年月日(9) a6(9) ヤマダ電機(9) 評判(9) 写真(9) firefox(8) 書き方(8) 方眼(8) .torrent(8) 万年筆(8) 日本語(8) apache(8) tc-1(8) 無料動画(8) 冷蔵庫(8) 設定(8) 修理(8) 今村恵子(8) インストール(7) ダイソー(7) 無料(7) 無印良品(7) ほぼ日(7) nikkor(7) dvd(7) システム手帳(7) 水谷ケイ(6) cgi(6) c#(6) うなぎ(6) スーパー(6) hdd(6) 変換(6) ssh(6) vq1005(6) 2009(6) 風邪(6) centos(6) 機内持ち込み(6) 2008(6) 比較(6)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 方法 設定 サンプル ダウンロード セール 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 最新 MP3 動画 Torrent 解説 意味 用語集 参考文献 お薦め お勧め おすすめ 便利 Blog ブログ mixi 待受画面 修理Process Time: 0.185804s / load averages: 0.23, 0.31, 0.40
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク