【问题标题】:SCons: directory dependency in a parallel buildSCons:并行构建中的目录依赖
【发布时间】:2013-02-18 15:21:13
【问题描述】:

我在 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 正在同时构建,而 Install() 构建器正在为需要安装在项目 1 的 dist 目录中的文件运行。

所以,我的问题是:

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

非常感谢,

BugK.

【问题讨论】:

    标签: parallel-processing scons


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      相关资源
      最近更新 更多