私はwaf
に2つのタスクを持っており、正しい順序で実行する必要があり、2番目のタスクは最初のタスクが終了するまで待つ必要があります。それは、私はそれが動作するように期待される方法を行動だことを示すためにwafに次のタスクを開始する前にタスクが完了するのを待つように伝えます
、私は最初のタスク(t_1
)秒で第二のタスク(t_2
)秒で、タスクの内部で待ちます。そして、2番目のタスクが最初に終了します。これは、待機した後に作成するフォルダにタイムスタンプがあるので表示されますt_2 < t_1
。 どのように私はt_1
が正常に終了した後t_2
がexectuedされていることを、WAFを伝えることができます:?1問で
MWE:の
after
属性であなたは(t_1
その例では)前を実行しなければならないタスクを指定する必要がのWScriptfrom waflib import Context, Options from waflib import Task, TaskGen from waflib.Tools.compiler_c import c_compiler def options(opt): opt.load('compiler_c') def configure(cnf): cnf.load('compiler_c') def build(bld): bld.program(features=['t_1', 't_2'], source='main.c', target='abc') class t_1(Task.Task): always_run = True run_str = 'echo start t_1 && python -c "import time; time.sleep(4)" && echo end t_1 && mkdir t_1' color = 'RED' @TaskGen.feature('t_1') @TaskGen.after('apply_link') @TaskGen.before('t_2') def add_t_1_task(self): self.create_task('t_1') class t_2(Task.Task): always_run = True run_str = 'echo start t_2 && python -c "import time; time.sleep(1)" && echo end t_2 && mkdir t_2' color = 'RED' @TaskGen.feature('t_2') @TaskGen.after('apply_link', 't_1') def add_t_2_task(self): self.create_task('t_2')
''は間違っています。これは '@ TaskGen.before( 'add_t_2_task')'です。さらにそれは必要ではない。タスク 't_1'と' t_2'はあなたの例ではどんな順序でも作成できます。重要なのは実行命令です。 – neuro
コメントありがとうございます。私は文書を見つけることができますが、タスクジェネレーターのメソッドを制約として置く必要があるのはどこですか?しかし、 't_2(Task.Task):'の 'after = ['t_1']'を使う問題に対する私の解決策は正しいですか? – wafwafwaf
@neuroもう一度尋ねて申し訳ありませんが、あなたがwafで非常に経験しているように、私が教えてくれれば、ドキュメントでこれを見つけるべき場所を教えてください。 – wafwafwaf