我希望標題能夠澄清我想問的問題,因爲它有點棘手。SCONS:製作一個特殊的腳本生成器取決於另一個生成器的輸出
我有scons的SConscript爲每個如下(在Linux中執行它,如果它事項)子目錄:
- src_dir
- 編譯
- SConscript
- YACC SRCS
- s cripts
- legacy_script
- 數據
- SConscript
- 爲YACC
- 編譯
我使用variant_dir沒有副本,F數據文件或例如:
SConscript('src_dir/compiler/SConscript', variant_dir = 'obj_dir', duplicate = 0)
構建YACC後所得obj_dir是:
- obj_dir
- 編譯
- compiler_compiler.exe
- 編譯
現在是這筆交易。
我還有一個SConscript在需要做兩件事情中的數據目錄: 1.編譯與YACC編譯編譯
2.數據利用編譯器的輸出,並與legacy_script我不能改變
運行 (在legacy_script,採取彙編的數據的輸出,並建立一些.h文件的另一個軟件依賴於)
1號是很容易來達到的:
linux_env.Command('[output1, output2]', 'data/data_files','compiler_compiler.exe data_files output1 output2')
我的問題是2號:我如何使腳本運行者依賴於另一個目標的輸出 而只是爲了澄清,我需要讓scons的運行(且僅當compiler_output變化):
src_dir/script/legacy_script obj_dir/data/compiler_output obj_dir/some_dir/script_output
(腳本的用法是:legacy_script INPUT_FILE OUTPUT_FILE)
我希望我自己清楚,感覺隨意問一些更多的問題...
是的,但命令生成器應該在legacy_script的SConscript,它的SRC是由另一個SConscript創建obj的目錄,所以我怎麼告訴他,SRC是嗎? – 2010-10-04 14:10:26
使用'#obj_dir/data/compiler_output'來引用生成的輸出並將該文件用作'#obj_dir/some_dir/script_output'的源文件。 – 2010-10-05 09:08:41
它工作!謝謝 – 2010-10-05 11:37:39