现在我有一个与此类似的项目结构:
project1/SConstruct (creates library1 and executable1)
files
project2/SConstruct (creates library2 and executable2)
files
project3/SConstruct (creates executable3 without libraries
creates executable4 with library1 and library2)
files
我可以毫无问题地使用SCons构建所有项目,但是我想将项目1和项目2中的依赖项添加到项目3中。在项目3中运行scons
时,如果项目1或2未启动到目前为止,我希望他们能够建成。
这类似于SCons: directory dependency in a parallel build,区别在于我有几个SConstruct文件,每个项目一个。
我还希望将命令行选项传递给依赖项目,即,在项目3中运行scons debug=1
时,项目1和2将使用debug=1
重建。
有没有办法实现这个目标,还是应该更改我的目录/构建结构?
答案 0 :(得分:2)
您不必更改基本构建结构。您只需将单个项目组合到一个公共依赖树中,这样SCons就可以自动为您找出其余的项目。 为此,在与" project_x"相同的文件夹中添加顶级SConstruct文件。 dirs并打电话给你的子项目:
SConscript('project1/SConstruct')
SConscript('project2/SConstruct')
SConscript('project3/SConstruct')
然后在你的project3中,从project1添加库(让它命名为" libproj1.a")及其路径:
env = Environment()
env.Append(LIBS = ['proj1'])
env.Append(LIBPATH = ['../project1'])
env.Program('main3','main3.cpp')
你完成了。 像这样," debug = 1"选项到达所有项目,并在需要时自动触发重建。 如果要构建单个项目/目标,可以在命令行中指定它:
scons project1
或
scons project3/main3