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.ccin Program をに置き換えるとsrc/foobar.cc、機能しますが、明らかにではなくでfoobar.o作成されますsrc/build/variant1src/foobar.ccin Command をに置き換えると機能しますが、コードを;build/variant1/foobar.ccで生成したいと思います。src/(また、インクルード ディレクトリ内の相対パスなどは、次の場合を除き機能しないためduplicate=1)の場合
duplicate=1、同様のエラー メッセージが表示されますが、今回はバリアント ディレクトリに言及しています。ソース
build/variant1/foobar.ccが見つかりません。ターゲットに必要ですbuild/variant1/foobar.o
これを回避する方法はありますか?それは SCons の制限/バグですか、それとも私の側に根本的な誤解がありますか?