我希望能够根据顶层定义的常见构建模式有选择地构建分层源树。源代码树由许多不同的模块组成,有时在层次结构中的不同级别,如下所示:
- 大模块包
- 子模块包 A
- 模块 A1
- 模块 A2
- 子模块包 B
- 模块 B1
- 子模块包 A
- 小模块封装
- 模块 C1
- 模块 C2
每个模块可能依赖于任意数量的其他模块(当然没有循环)。
每个模块都需要能够激活在顶层定义的一组模板目标的选择,这些目标将查找某些源文件并构建某些输出。例如,Library
模板目标将简单地构建当前模块的共享库。目标将UnitTest
确保所有上游依赖项都构建了它们的库,查找单元测试源,构建然后运行单元测试可执行文件。
目标是让每个模块都有自己封装的 SConscript 文件,该文件将列出 a) 其依赖项和 b) 应为其启用的顶级目标的名称。
理想情况下,我想确保可以以类似于以下方式构建这些目标:
scons ModuleA1_UnitTest
我怎样才能设置 scons 来为我做这件事,尤其是以一种对添加新模块友好的方式?