使用SCons创建层次化构建
我有一个库项目,其中包含一些在子文件夹中的示例。
这个库本身有一个 SConstruct
文件,而每个示例都有自己的文件夹和自己的 SConstruct
文件。
我想在主(根) SConstruct
文件中添加一个目标,这样我就可以像往常一样编译库,同时一次性编译所有示例。
有没有现成的机制或构建工具可以做到这一点?
附注:我不想只有一个大的 SConstruct
文件,因为我希望示例文件夹保持独立。
2 个回答
4
对于像我这样通过谷歌找到这个问题的人,我发现了一个更完整的示例,展示了如何构建一个库以及调用它的代码,具体内容可以在这里找到。
如果回答一个旧问题被认为不妥,我在此表示歉意——很多人搜索“scons”、“子目录”、“层次结构”、“构建”等各种组合时,都会找到这个页面。我希望能帮其他人节省我花了8个多小时才搞定的层次构建问题。
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')
更深层目录的 SConscript 文件:
env = Environment() # Builds sub/dir/foo from sub/dir/foo.c env.Program(target = 'foo', source = 'foo.c')