0

SConsを使用したターゲットの機能と少し混乱しています。現在、自分のフォルダにあるスイートcheckを起動するための単純なターゲットを作成しようとしています。すべてのテストを起動するために、メソッドを呼び出すだけで、テストを含むcppファイルを登録するファイルがあります。Boost.Testteststests/SConscriptProgram

ターゲットが要求された場合はファイルを呼び出す必要があることをSConsに伝えたいだけです。それ以外の場合は、を呼び出してプログラムをビルドします。tests/SConscriptchecksrc/SConscript

$> scons check
4

2 に答える 2

1

あなたの答えで述べたように、SCons Alias()関数を使用して、1つまたは複数のターゲットに名前を割り当てることができますが、ターゲットsconsを指定せずに実行するだけでは、SConsにターゲットを構築するタイミングはわかりません。ターゲットを指定しない場合、単体テストがビルドおよび/または実行されることに気付くでしょう。

SConsに何を構築するかを指示するには、SCons Default()関数を使用できます。この関数を使用しない場合、すべてのターゲットがデフォルトでビルドされます。依存関係などに応じて、ビルドする必要のあるターゲットのみが明らかになります。

デフォルトでターゲットのみをビルドし、src/SConscriptそのライブラリを想定するには、次のようにすることができます。

libTarget = env.Library('yourLib', theSourceFiles)
env.Default(libTarget)

Default()関数は、いくつかの異なるターゲットに使用できます。

これで、ターゲットなしで実行するsconsと、Default()関数で設定されたターゲットのみが作成されます。そして、を実行するscons checkと、チェックターゲットとその依存関係が構築されます(チェックターゲットでAlias()を呼び出し、チェックターゲットでDefault()も呼び出さないと仮定します)

于 2012-08-03T08:17:41.557 に答える
0

私は自分の質問に答えるつもりです。私が見たところ、SConsのエイリアスを使用してBuilderをにバインドできますrule

私はこのアドレスでChrisFosterからの投稿を読みました:http ://www.scons.org/wiki/UnitTestsは次のアイデアを思いつきます:

check追加するテストごとに、次のようにターゲットに追加します。

prog = env.Program(...)
env.Alias('check', prog)
env.Alias(nameOfTheTest, prog)

このようにして、2つの異なる方法でテストを呼び出すことができます。

$> scons check             # Calls all the tests of the suite
$> scons nameOfTheTest     # Only calls the test we added

お役に立てば幸いです。ありがとう

于 2012-08-02T20:56:51.507 に答える