1

make で魔法の記号を調べるのにうんざりして、 wafを試すことにしました。

caliber を使用して電子ブックを作成しようとしていますが、ファイルを取り込み、そのファイルを含むいくつかの引数を使用してプログラムを実行し、出力を生成する wscript を作成したいと考えています。Waf は、入力ファイルが出力よりも新しい場合にのみビルドする必要があります。

make では、次のような makefile を記述します。

%.epub: %.recipe
    ebook-convert $ .epub --test -vv --debug-pipeline debug

% はファイルのベース名を表すマジック シンボルで、$ は出力ファイル名 (basename.epub) を表す記号です。

呼び出すmake soverflow.epubと、soverflow.recipe で ebook-convert が実行されます。前回のビルドから .recipe が変更されていなければ、何もしません。

どうすればwafで同様のことを行うことができますか?

(なぜ waf なのか? それは私が既に知っている実際の言語を使用しているからです。これが scons で本当に使いやすいのであれば、それも良い答えです。)

4

1 に答える 1

3

基本的な wscript ファイルの作成方法はわかりましたが、コマンドラインで指定されたターゲットをビルドする方法がわかりません。


Waf Book には、Task generatorsに関するセクションがあります。名前と拡張子に基づくファイル処理セクションでは、私が適応した lua の例を示します。

from waflib import TaskGen
TaskGen.declare_chain(
        rule         = 'ebook-convert ${SRC} .epub --test -vv --debug-pipeline debug', 
        ext_in       = '.recipe', 
        ext_out      = '.epub'
)

top = '.'
out = 'build'

def configure(conf):
        pass

def build(bld):
    bld(source='soverflow.recipe')

epub を削除するクリーンなステップも自動的に提供します。

于 2012-02-25T17:18:23.450 に答える