1

SConstruct ファイルをコード ブロックに分割しようとしています。各ブロックはエイリアスによって制御され、デフォルトではコードは実行されません。つまり、実行するだけsconsです。エイリアスはもちろんコマンドラインから実行されます (以下の例):

scons h

ここにいくつかのコード例があります。これはうまくいくようです。ただし、質問は3つ。

  1. これを行うより良い方法はありますか?

  2. より具体的には、Alias 呼び出しのターゲット引数がアクション関数hh3アクション関数にどのように渡されるのか理解できません。それらを空白のままにすると、ビルドが機能しないことに気付きました。ただし、これらの関数は引数を取らないため、これらの関数にターゲットを渡す明確な方法はありません。

  3. 関連して、ドキュメントには、アクション関数にはtargetsource、およびenv引数が必要であると書かれています。これらのアクション関数にはこれらがありませんが、とにかく機能します。どうして?

コードは次のとおりです。

#!/usr/bin/python                                                                                                                                         

Default(None)

def h(env):
    x = env.Program("hello1", "hello1.c")
    y = env.Program("hello2", "hello2.c")
    return 0

def h3(env):
    y = env.Program("hello3", "hello3.c")
    return 0

env = Environment()
env.AddMethod(h, "HELLO")
env.AddMethod(h3, "HELLO3")
env.Alias("h", ["hello1", "hello2"], env.HELLO())
env.Alias("h3", ["hello3"],env.HELLO3())
4

1 に答える 1