SCons:并行构建中的目录依赖项

时间:2013-02-18 15:21:14

标签: parallel-processing scons

我在SCons的并行构建中遇到目录依赖问题。 在以下(简化)层次结构中考虑具有单个SConstruct的两个项目:

- SConstruct
- project1
  - src
- project2
  - src
- build
  - project1
  - project2
- dist
  - project1
  - project2

project1和project2中的每一个都应该在相关的构建目录下构建(使用variant目录),并且需要在相关的dist目录下安装几个目标。

项目2取决于项目1的dist。我已经使用Depends()语句显式地声明了这种依赖关系,如下所示:

Depends('project2', 'dist/project1')

当我使用非并行构建时,没有问题。项目1已完全构建,目标安装在dist目录中,然后才构建项目2。但是,当我使用多个作业(4)时,正在为正在运行的Install()构建器构建项目2,以便在项目1的dist目录中安装所需的文件。

所以,我的问题是:

  • Depends(project2, dist/project1)语句是指创建dist/project1目录还是完成构建所有目录的子项?
  • 我该如何解决这个问题?

非常感谢,

釜谷。

1 个答案:

答案 0 :(得分:1)

不要在Depends()函数中将实际目录指定为字符串,而是尝试指定SCons project1和project2构建器返回的实际目标。每个SCons构建器(或至少大多数)都将受影响的目标作为对象返回,并且最好使用此对象而不是文件/ directoy名称,因为如果您不使用完全相同的文件/目录路径,则不会考虑作为同一个目标。

以下是一个示例,相应填写内容:

project2Target = Install()
# Im not sure how you're building project1, so replace the builder
project1Target = Proj1DistBuiler()

Depends(project2Target, project1Target)