我正在尝试为我的项目创建一个基于 scons 的构建系统。
该项目由几个目录组成,每个目录都包含整个项目的一部分。
每个目录都包含共享库、程序或进程(守护程序)的源代码。
一个目录 ( bin ) 包含所有共享库和所有可执行文件。
大多数目录已经包含一个 sconscript 文件(名为Sconstruct),该文件构建目录的模块(lib / 可执行文件)并将其放在bin目录中。
现在我想再创建一个 sconscript - 来统治它们。在父目录中,我想要一个sconscript
来构建项目的所有库和可执行文件,这样在我在这里和那里更改一些源之后,我可以从父目录和所有受影响的模块将被重新构建。
我尝试了几种方法,但都失败了。
我是 scons 行业的菜鸟,我怀疑这是我失败的根本原因,但我确信这个问题已经被其他更有经验的开发人员多次解决 - 因为我描述的情况很常见.
所以,欢迎提出任何建议!
编辑:
我当前在父目录中的 Sconstruct 如下所示:
import os
env = os.environ
Export('env', 'os')
SConscript([
'Server1_Dir/Sconstruct',
'Server2_Dir/Sconstruct',
'Server3_Dir/Sconstruct'
])
子目录中的 Sconstructs(我知道它们应该被称为 Sconscript)以:
import os
Import('env')
home=env.get('HOME')
所以在我看来,我对所有脚本都使用了相同的环境,尽管我得到了很多:
scons: warning: Two different environments were specified for target....
警告,这对我来说还不清楚。
还值得注意的是,并非主脚本中的所有服务器组合都会产生这些警告 - 有些可能会和平地离开,但不是全部。
在我看来,这是正确的方法,但我找不到摆脱这些警告(及其根本原因)的方法。
谢谢。