SCons に自分のディレクトリにいくつかのソース ファイルを生成してもらい、src/
それらを他のソース ファイルと同じように自分のビルド ディレクトリにビルドしたいと考えていますbuild/variantX
。
これは私の SCons ファイルです:
import SCons
def my_builder(env, target, source):
# do stuff
pass
env = Environment()
env.VariantDir('build/variant1/', 'src', duplicate=0)
env.Command('src/foobar.cc', 'src/foobar.input', action=my_builder)
env.Program('bin/test', [
'build/variant1/foobar.cc',
'build/variant1/test.cc',
])
これは、次のメッセージでエラーになります。
ソース
src/foobar.cc
が見つかりません。ターゲットに必要ですbuild/variant1/foobar.o
私が実際にビルドするコマンドを提供していることを考えると、これは正しいとは思いませんsrc/foobar.cc
。
ここで、いくつかの回避策を試しました。
build/variant1/foobar.cc
in Program をに置き換えるとsrc/foobar.cc
、機能しますが、明らかにではなくでfoobar.o
作成されますsrc/
build/variant1
src/foobar.cc
in Command をに置き換えると機能しますが、コードを;build/variant1/foobar.cc
で生成したいと思います。src/
(また、インクルード ディレクトリ内の相対パスなどは、次の場合を除き機能しないためduplicate=1
)の場合
duplicate=1
、同様のエラー メッセージが表示されますが、今回はバリアント ディレクトリに言及しています。ソース
build/variant1/foobar.cc
が見つかりません。ターゲットに必要ですbuild/variant1/foobar.o
これを回避する方法はありますか?それは SCons の制限/バグですか、それとも私の側に根本的な誤解がありますか?