2008-06-23

SCons で一つのソースから複数のターゲットを作る

SCons で一つのソースから複数のターゲットを作るときにうまくいかないのでテストしてみる.

def XXXBuilder():
    return Builder(action = "perl xcommand $SOURCES")

def YYYBuilder():
    return Builder(action = "perl ycommand $SOURCES")

env = Environment(BUILDERS = { "XXX":  XXXBuilder(), "YYY": YYYBuilder() })

env.XXX("src.aaa.xxx", "src.aaa")
env.YYY("src.aaa.yyy", "src.aaa")

ここで,xcommand file は file から file.xxx を生成,また,ycommand file は file から file.yyy を生成.

これを実行するとうまくいった.

うまくいかないと思い込んでいたのは,

env.XXX(None, "src.aaa")
env.YYY(None, "src.aaa")

のようにしていたため.このようにしていたのは,この場合の一つのコマンドが一つのソースから複数のターゲットを生成するのに対応しようとしたため.(→そうではなく,scons -c で消去されないようにするためだった)

あらためて,一つのコマンドで一つのファイルから複数のターゲットを生成する方法を検証してみると,以下で全く問題なかった(もちろん xcommand で .xxx と .yyy を生成するようにした上で).

env.XXX(["src.aaa.xxx", "src.aaa.yyy"], "src.aaa")

0 件のコメント:

コメントを投稿