我正在構建具有多個環境的代碼,輸出到多個目標目錄。管理這個的自然方式似乎是使用變體目錄。所以我可能想用不同的選項和不同的VariantDirs多次構建相同的文件集。所以我希望能夠在不同位置擁有多個SConscript文件,所有文件都指向相同的源目錄。我試過SConscript在不同目錄中的源文件
一種選擇是要做到這一點:
SConstruct
src/test.cpp
src/magic/SConscript
這是我SConstruct:
env = Environment()
SConscript('src/magic/SConscript',
variant_dir = 'build/src',
src_dir = 'src',
exports={'env':env},
duplicate=0)
,這爲src /魔法/ SConscript:
Import('env')
source = 'test.cpp'
env.Object(source)
我得到這個輸出:
scons: *** [build/src/magic/test.o] Source `src/magic/test.cpp' not found, needed by target `build/src/magic/test.o'.
這看起來好像variant_dir
和src_dir
都沒有被Object
所尊重,因爲根本沒有提到magic
。
我誤解了variant_dir/src_dir是如何工作的嗎?用不同的目標構建同一組文件的最佳方法是什麼?
是的,看起來你是對的。我在看這裏的文檔:https://bitbucket.org/scons/scons/wiki/SConscript(),但我猜它已經過時了。 src_dir參數似乎完全被忽略。所以我看不到任何方法來做我需要的...有相同文件的多個SConscript文件具有不同的選項。我可能需要使用傳入的不同參數多次調用相同的SConscript文件。 – Stefan
實際上,我認爲一個更好的解決方案可能是在源目錄中有多個SConscript文件,其名稱不同。我明天會試試。謝謝! – Stefan
每次使用不同的環境調用相同的SConscript。查看https://bitbucket.org/dirkbaechle/scons_talks,特別是'scons_talks/pyconde_2013/examples/exvar /'作爲一個工作示例。 – dirkbaechle