nDiki : SCons

SCons

スポンサード リンク

2005年4月20日 (水)

SConsGNU Autotools のかわりになるか

NSIS のサイトによるとビルドに「SCons」を使うようしたらしい。

  • クロスプラットフォーム
  • AutoconfAutomake と同様の機能を統合
  • LaTeX もビルトインサポート

と興味深いツールになっているようだ。

現在プロジェクトLaTeXベースのドキュメント生成には GNU Make を使っているのだが、UNIXWindows の両方でビルドできるようにするには ComSpec 環境変数の有無で使用するコマンドを切り換えたり等いろいろ面倒なので、代替ツールとして使えないかなと。

基本的な機能は Make に対する改良がなされているようであるし、コピー等ファイル操作も SCons 自体がもっているのでクロスプラットフォームでビルドできるようにするのも楽そうだ。

一方 Autoconf 系の機能については、インストール済みのライブラリの検出や実装レベルのチェック等を実装しているようである。 make check や make dist、make install 等にあたるターゲットに関する機能(あるいは規約)のようなものは無い。これは非常に残念。 結局自分が Ant を使わなくなったのも GNU Autotools にあるこれらの機能に欠けているからであるし。

実は私がPerl が好きな理由の一つとして、これらサポートが充実しているという点がある。Perl では ExtUtils::MakeMaker (あるいは Module::Build)があり、ビルドからテスト、ソースパッケージのパッケージングまでフレームワークが整っている。

SConsPython ベースで、Makefile にあたるファイルも Python スクリプトである。 SCons が影響を受けた Cons は Perl ベースであったのだが、既に2001年5月ごろから開発が止まってしまっている。残念。

ということで Make の代替には使えそうであるが、GNU Autotools と同じようなことをするにはいろいろ手をかけないといけないといった印象。

スポンサード リンク
[ 4月20日全て ]

2005年4月29日 (金)

SCons 微妙

SConspLaTeX2e ソースファイルを PDF に変換する SConstruct ファイルを書いてみた。

 bb_builder = Builder(action = 'ebb $SOURCE',
                      suffix = '.bb', src_suffix = '.png')
 pdf_builder = Builder(action = 'dvipdfmx -V 4 $SOURCE',
                       suffix = 'pdf', src_suffix = '.dvi')
 env = Environment(LATEX = 'platex')
 env.Append(BUILDERS = {'BBBuilder' : bb_builder})
 env.Append(BUILDERS = {'PDFBuilder' : pdf_builder})
 env.PDFBuilder(target = 'example-doc')
 env.DVI(target = 'example-doc', source = 'example-doc.tex')
 env.Clean('example-doc.dvi',
           ['example-doc.log', 'example-doc.out',
            'example-doc.toc', 'example-doc.aux'])
 env.Depends('example-doc.dvi', 'image1.bb')
 env.Depends('example-doc.dvi', 'image2.bb')
 env.Depends('example-doc.dvi', 'image3.bb')
 env.BBBuilder('image1')
 env.BBBuilder('image2')
 env.BBBuilder('image3')
  • 組み込みの PDF builder が今いち挙動がよくわからないので Builder を作成
  • .bb ファイル用の Builder を作成
  • latex ではなく platex を使うように

.tex から .dvi の生成ルールでは、補助ファイルを見て適宜数回 platex を実行してくれる。ここら辺はさすが。

GNU Make のような暗黙のルールの適用がない(わからない)ので、.bb ファイルを dvi の依存ファイルに指定するだけでは駄目で、ビルド指定をする必要があるのがちょっと面倒。

これだけだと GNU Make より便利とはいえないな。 プラットフォームによって異なるコマンド(cp / copy など)を使うような事や、もうちょっと複雑な事などをしないとそれほどメリットがでないか。

[ 4月29日全て ]

About Me

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

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

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

月別インデックス
Process Time: 0.057339s / load averages: 0.57, 0.39, 0.39
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker