nDiki : GNU Autotools
GNU Autotools
スポンサード リンク
Related term
2001年6月7日 (木)
■ 14:30 GNU Autotools + Visual C++

投げ。とりあえず nmake 用 Makefile を書いてお茶をにごす。
- Module::Build でソースパッケージング (2005-08-24)
- ActivePerl で Ming (2005-02-23)
- SCons は GNU Autotools のかわりになるか (2005-04-20)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- プロジェクト関連ドキュメントを TeX で (2004-07-23)
■ 11:15 AC_CHECK_LIB の第5引数

昨日から configure (with GNU Autotools) で libwwwcore (in W3C libwww ライブラリ)を検出させようとしている。 が、ライブラリはインストールされているのに検出できない。 同じ W3C libwww の中の libwwwutils は検出できるのに。
と Autoconf マニュアルをよく読んだら AC_CHECK_LIB に第5引数が。 もしやと思ったら、やはり。 libwwwcore は libwwwutils に依存しているので一緒にリンクさせなければならないのであった。configure.in の中の記述を
AC_CHECK_LIB([wwwcore], [HTLibInit], [], [], [-lwwwutils])
にしたら detect。
- SCons は GNU Autotools のかわりになるか (2005-04-20)
- PEG-TJ25 インストールメモ (2004-04-06)
- CinePaint で HDR イメージを作れるようになった (2006-04-16)
- Debian に RSS リーダ「フレッシュリーダー」をインストール (2006-03-06)
- 自宅の無線 LAN を復旧 & IEEE 802.11g 化 (2004-11-26)
2005年4月20日 (水)
■ SCons は GNU Autotools のかわりになるか

NSIS のサイトによるとビルドに「SCons」を使うようしたらしい。
と興味深いツールになっているようだ。
現在プロジェクトLaTeXベースのドキュメント生成には GNU Make を使っているのだが、UNIX、Windows の両方でビルドできるようにするには ComSpec 環境変数の有無で使用するコマンドを切り換えたり等いろいろ面倒なので、代替ツールとして使えないかなと。
基本的な機能は Make に対する改良がなされているようであるし、コピー等ファイル操作も SCons 自体がもっているのでクロスプラットフォームでビルドできるようにするのも楽そうだ。
一方 Autoconf 系の機能については、インストール済みのライブラリの検出や実装レベルのチェック等を実装しているようである。 make check や make dist、make install 等にあたるターゲットに関する機能(あるいは規約)のようなものは無い。これは非常に残念。 結局自分が Ant を使わなくなったのも GNU Autotools にあるこれらの機能に欠けているからであるし。
実は私がPerl が好きな理由の一つとして、これらサポートが充実しているという点がある。Perl では ExtUtils::MakeMaker (あるいは Module::Build)があり、ビルドからテスト、ソースパッケージのパッケージングまでフレームワークが整っている。
SCons は Python ベースで、Makefile にあたるファイルも Python スクリプトである。 SCons が影響を受けた Cons は Perl ベースであったのだが、既に2001年5月ごろから開発が止まってしまっている。残念。
ということで Make の代替には使えそうであるが、GNU Autotools と同じようなことをするにはいろいろ手をかけないといけないといった印象。
- Module::Build でソースパッケージング (2005-08-24)
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- NSIS 2.22 は Linux でビルドできず (2006-12-20)
- ActivePerl で Ming (2005-02-23)
- nmake で毎回 pl2bat されるのを何とかしたい (2004-11-25)
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)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
2007年7月31日 (火)
■ Windows 向けソフトウェア開発者はソースパッケージを作る習慣がない

GNU Autotools や ExtUtils::MakeMaker (とその仲間たち)で make dist するのがあたり前になっている自分には、気持ち悪い。
ビルドの自動化とソースパッケージ作成の自動化・バージョン管理のセットアップは、最初の仕事だと思うのだが。
- SCons は GNU Autotools のかわりになるか (2005-04-20)
- Module::Build でソースパッケージング (2005-08-24)
- nmake で毎回 pl2bat されるのを何とかしたい (2004-11-25)
- NSIS 2.22 は Linux でビルドできず (2006-12-20)
- ActivePerl で Ming (2005-02-23)
スポンサード リンク
■よく検索されるキーワード
torrent(58) 提案書(54) perl(42) 使い方(39) linux(34) 書き方(29) x31(28) windows(28) usb(24) 動画(22) thinkpad(21) debian(20) mp980(19) 画像(19) 壁紙(19) svn(16) サンプル(16) 作り方(16) c#(15) リフィル(14) ヨドバシ(14) 手帳(13) アジェンダとは(13) 設定(13) cvs(12) ほぼ日手帳(12) ssh(11) 感想(11) ほぼ日(11) アジェンダ(11) java(11) バッグインバッグ(10) ドラマ(10) make(10) マキノ(10) メモリ(10) tc-1(10) 加湿器(10) nikon(10) af(9) ボールペン(9) ノート(9) インストール(9) gmail(9) ハクキンカイロ(9) a6(9) gimp(9) truecrypt(9) フィルムスキャン(9) ganttproject(9) 評判(9) 充電式カイロ(9) カメラ(9) アジェンダの書き方(9) dropbox(9) 修理(9) デロンギ(8) ファイル(8) 秋葉原(8) grub(8) 変換(8) proxy(8) subversion(8) 無料(8) 口コミ(8) wiki(8) ht-01a(8) ubuntu(8) 2008(8) porter(8) 無印(7) a6ノート(7) ご査収(7) ヨドバシカメラ(7) thinkingrock(7) centos(7) the(7) gtd(7) システム手帳(7) 映画(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.238588s / load averages: 0.09, 0.12, 0.16
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク