2010-09-14 117 views
6

我有一个库项目,其中包含子文件夹中的一些示例。使用SCons创建分层构建

库本身有一个SConstruct文件,每个样本都有自己的文件夹和它自己的SConstruct文件。

我想添加一个目标到主(根)SConstruct文件,这将允许我像往常一样编译库和所有的样本,一次。

是否有一个现有的机制/建设者呢?

P.S:我不想只有一个大的SConstruct文件,因为我希望示例文件夹保持独立。

回答

8

http://www.scons.org/doc/production/HTML/scons-man.html

创建分层构建

注意的是,文件名的子目录中的SConscript指定 文件 是相对于该子目录。

SConstruct:

env = Environment() 
env.Program(target = 'foo', source = 'foo.c') 

SConscript('sub/SConscript') 

子/ SConscript:

env = Environment() 
# Builds sub/foo from sub/foo.c 
env.Program(target = 'foo', source = 'foo.c') 

SConscript('dir/SConscript') 

子/ DIR/SConscript:

env = Environment() 
# Builds sub/dir/foo from sub/dir/foo.c 
env.Program(target = 'foo', source = 'foo.c') 
+0

在文档中找不到它。正是我需要的。非常感谢。 – ereOn 2010-09-14 14:27:15

4

对于那些像我一样来这个问题从谷歌,我找到了一个更完整的构建库和代码的例子它here。如果对这个老问题的回答是不被理睬的 - 对于scons,“子目录”,“分层”,“构建”等各种组合的大量搜索,我们建议这个页面,就像为了拯救别人,我花了8个多小时试图让分层构建工作干净利落)。

+0

这确实是一个很好的参考。几年后,[我终于可以实现我的目标](https://github.com/freelan-developers/freelan-all)使用SCons分层构建:项目分为几个库/样本/应用程序,它们都使用相同的SCons文件。 – ereOn 2014-07-22 07:01:19