1

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

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

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

项目 2 依赖于项目 1 的 dist。我已经使用如下语句明确声明了这种依赖关系Depends()

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

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

所以,我的问题是:

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

非常感谢,

BUGOK。

4

1 回答 1

1

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

下面是一个例子,相应地填写内容:

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

Depends(project2Target, project1Target)
于 2013-02-18T17:53:16.987 回答