2017-07-10 1 views
1

私はgtestをビルドして実行するためにwafを使用しています。waurでrecurseを使用し、タスクを順番に保つ

次のようにすべてを私のルートwscriptに入れたら、それは動作します。

def build(bld): 
    # build hello world lib 
    bld.recurse("src/cpp/hw") 

    # build hello world gtest app 
    cppUnitTest = bld.program(
     target = 'test_run', 
     source = [ 'test/unit/test_run.cpp' ], 
     use = [ 'HW_static', 'GTEST_static' ], 
     lib = [ 'pthread' ], 
     includes = [ bld.env.LIBGTEST_INCLUDES ], 
    ) 

    # run c++ unit test 
    bld(
     dependsOn = [cppUnitTest], 
     name = 'c++ unit test', 
     rule = './test_run', 
     cwd = bld.path.find_dir('build') 
    ) 

それはHW(Hello Worldの)と呼ばれるLIBを構築し、それがtest_runと、それはそのテスト・アプリケーションを実行するよりも、と呼ばれるアプリケーションを構築します。

しかし、アプリケーション 'test_run'を再帰を使用してビルドしたい場合、私はそれを動作させません。これはこれまでの私の試みの一つです。あなたは以下を参照することができますとして、私は結構です、特にテストアプリケーションのための解決策を見つけた:サブフォルダから

def build(bld): 
    global cppUnitTest 

    # build hello world lib 
    bld.recurse("src/cpp/hw") 

    # build hello world gtest app 
    bld.recurse("tests/unit") 

    # run c++ unit test 
    bld(
     dependsOn = [cppUnitTest], 
     name = 'c++ unit test', 
     rule = './test_run', 
     cwd = bld.path.find_dir('build') 
    ) 

とwscript_buildファイルは、その

cppUnitTest = bld.program(
    target = 'test_run', 
    source = [ 'test_run.cpp' ], 
    use = [ 'HW_static', 'GTEST_static' ], 
    lib = [ 'pthread' ], 
    includes = [ bld.env.LIBGTEST_INCLUDES ], 
) 

EDITのように見えます。しかし、私はより一般的な解決法に興味があるでしょう。特定のビルドステップが正しい順序で実行されていることを確認する方法。例えばもし私が他のアプリケーションを構築するために使用されるいくつかのコードを生成するために使用するものを構築するアプリケーションがあれば、

答えて

0

ユニットテストを実行する唯一の目的のために、私はとても素敵で簡単な解決策を見つけました。私はwaf_unit_testモジュールでビルドを使用しました。単にそのようなすべての私のテストプログラムに値「テスト」で属性「機能」を追加するよりも...このようなインポート...

from waflib.Tools import waf_unit_test 

を追加...

bld.program(
    features = 'test' 
    target = 'test_run', 
    source = [ 'test_run.cpp' ], 
    use = [ 'HW_static', 'GTEST_static' ], 
    lib = [ 'pthread' ], 
    includes = [ bld.env.LIBGTEST_INCLUDES ], 
) 

を。 ..そしてdependsOnとcppUnitTest命令を削除してください。残念なことに、このようなテストアプリケーションの出力は抑制されましたが、成功したテストがビルド関数内で次のコールバックを追加できる場合、フィードバックを得ることができました。

bld.add_post_fun(waf_unit_test.summary) 

gtestアプリケーションでは問題ありませんが、私はタスクを順番に保つためのより一般的な解決策が必要です。編集された質問を参照してください。

関連する問題