我希望标题能够澄清我想问的问题,因为它有点棘手。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