我希望这个标题澄清了我想问的内容,因为它有点棘手。
我为每个子网提供了一个SCONS SConscript,如下所示(在linux中进行,如果重要的话):
我使用不带副本的variant_dir,例如:
SConscript('src_dir/compiler/SConscript', variant_dir = 'obj_dir', duplicate = 0)
构建yacc后产生的obj_dir是:
现在就是这笔交易
我在数据目录中有另一个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)
我希望自己清楚明白,随意提出更多问题......
答案 0 :(得分:0)
我最近遇到类似的问题,当我需要先编译Cheetah模板时,然后从另一个Builder使用它来生成来自不同来源的HTML文件。
如果将第一个构建器的构建输出定义为第二个构建器的源,SCons将以正确的顺序运行它们,并且仅当中间文件已更改时才会运行它们。
沃尔夫冈