我已经通过示例scons构建这里,发现他们想提供一个适合我的项目的解决方案。Scons Hierachical构建
的结构如下:
root/
Module_A/
include/
foo.h
bar.h
src/
foo.cpp
bar.cpp
Module_.../
每个模块都遵循同样的结构,所有的.h的一个包含文件夹和CPPS一个src文件。每个模块构建到一个共享对象中。没有可执行文件。
模块具有交叉依赖性。例如Module_A是日志记录机制,它用在模块B,C,D等中。同样,Module_B是配置加载器,它在其他几个模块中使用。而Module_C将成为IPC模块,几乎用于列出的每个模块中。最后,Module_D是命令中心,并链接到每个其他模块(字面上)。
我有兴趣替换当前使用递归make构建项目的设置。我正在尝试构建必要的sconstruct和SConscripts,但我甚至都是新手,更不用说scons了。
我有兴趣将每个模块的.cpp和.h文件转换为.so,并且可以像make make一样自动解决它的依赖关系。
在SConscript中,我目前使用glob来获取* .cpps,然后在CPPPATH中包含模块的'./include'。 我用
env.SharedLibrary(CPPATH='./include', source= (list of the cpps))
但由于这依赖于其他模块,它不会工作,指出正在使用的“未声明”的其他模块的功能。
我该如何着手使用分层scons设置来构建这种复杂的结构?
我不明白你的这个说法:“但是因为这取决于其他模块,它不会工作,指出正在使用的“未申报的其他模块的功能“'这是否会因包含依赖项而失效?如果是这样,那么它正确指定包含路径的简单问题 – Brady