2017-06-07 10 views
1

私はファイルを作成しないwafルールを持っているので、ターゲットはありません。私は最初のルールの後に別のwafルールを厳密に実行したいと思います。以下は、この種の状況の考案された例です。メイクの構文でwafの依存関係としてコマンドを設定する方法

、私は以下のような何かやろうとしている:WAFで

kill_server: 
    myserver --kill 

install_server: kill_server 
    cp $(SRC)/myserver $(BLD)/myserver 

を、私はここにいる:

def install_server(bld): 
     killer = bld(name='kill_server', rule='myserver --kill') 
     bld(name='install_server', rule='cp ${SRC} ${TGT}', 
      source=os.path.join(src, 'myserver'), 
      target=os.path.join(bld, 'myserver'), deps=[killer]) 

明らかにこれは動作しません、killerので、ターゲットノードではなくTaskGenです。何だ私はデープに入れましたか?ステップはターゲットを作成しない別のステップに依存できますか? TGは、TGの名を持つ1つのタスクのみ生成基づき、原則として

def build(bld): 

    bld(
     name = 'kill_server', 
     rule = 'echo killing ...;sleep 5', 
    ) 

    bld(
     name = 'install_server', 
     rule = 'cp ${SRC} ${TGT}', 
     source = 'myserver', 
     target = 'myserver2', 
     after = ["kill_server"] 
    ) 

それが動作し、afterキーワードは、タスクのために使用されます。

答えて

1

は、ルールベースのタスクジェネレータのために、あなたはafterキーワードを使用することができます。

他のTGのもう1つのソリューションは、出力ファイルを生成してそれを依存TGのソースとして使用することです。

ソースとターゲットが同じであれば、WAFノードAPIを使用します。

server = bld.path.find_node('myserver') 
target_server = server.get_bld() 

WAFは自動的にビルドツリー対ソースツリーを管理します。

関連する問題