2012-02-16 65 views
1

目标这是我的主要SConstruct文件SCons的 - 如何提供显式依赖于跨脚本

env = Environment() 

gen_source = env.SConscript(
     'generate_sources.scons', 
     variant_dir='derived_src', src_dir='src', 
     duplicate=0) 
compile_source = env.SConscript('compile.scons', 
     variant_dir='build', src_dir='derived_src', 
     duplicate=0) 
env.Depends('build/', 'derived_src/') 

gen_source与一个源发电机目标,从我的源目录输出在derived_src/文件,compile_source一个脚本具有多个目标的脚本。

如果没有靶在命令行设置,即运行scons,就会产生源然后编译,但如果提供了的目标,如scons pg_test然后scons的将失败,并且抱怨derived_src/some_file不存在。

建立这种目标关系的最佳方式是什么?最好我希望改变它的行为,使它只产生将要被编译的源。

回答

1

根据您是从gen_source和compile_source SConscript执行返回,如果它的目标清单那么我想这更有意义的设置是这样的依存关系:

env.Depends(compile_source, gen_source) 

或者,如果你”再没有返回目标列表,然后在最起码的目录相对付诸根SConstruct,像这样:

env.Depends('#build', '#derived_src') 

而且又进了一步。将这些目录中有水珠指定的文件,可能()

希望有帮助。

+0

我已经找到了一种方法在我的compile.scons文件中导出()'我生成的源文件节点和'导入()'这些文件,正如预期的那样工作,设置了正确的依赖关系。谢谢! – koo 2012-02-17 00:46:23

相关问题