我希望SCons在我的src/
目錄中爲我生成一些源文件,然後將它們構建爲我的生成目錄build/variantX
中的任何其他源文件。SCons代碼生成和VariantDir
這是我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
的命令。現在
,我嘗試了一些解決方法:
,如果我在計劃與
src/foobar.cc
取代build/variant1/foobar.cc
,它的工作,但顯然foobar.o
獲取src/
創建而不是build/variant1
如果我更換
src/foobar.cc
在命令與build/variant1/foobar.cc
,它確實工作,但我想代碼生成src/
; (也因爲類似的事情在相對路徑包括目錄不會,除非duplicate=1
工作)如果
duplicate=1
,我得到一個類似的錯誤消息,但這次提variant目錄:來源
build/variant1/foobar.cc
未找到由目標build/variant1/foobar.o
需要的是有辦法解決?這是SCons中的限制/錯誤,還是我身邊存在根本的誤解?
你有沒有找到這個問題的答案?我面對的東西非常相似。 – jfritz42 2014-04-26 04:17:55