2015-12-12 41 views
0

假设我有目标A,只有在BC已经构建时才能构建。建筑物C比建筑B贵得多。多种优先排序的方式来满足依赖关系

如何编写一个最佳的SConstruct文件,当我要求它建立A时,它满足以下约束条件。

  1. 如果任BC存在并且UPTODATE,直接建立A
  2. 如果既没有B也不C存在并且UPTODATE,第一建立B然后生成A

如果scons不提供这个能力,还有其他的构建工具提供吗?

+0

如果C总是比B昂贵得多,我会认真考虑永远不要构建C。使B成为A的唯一依赖关系,并且根据对上面给出的问题的描述,您应该可以做得很好...... – dirkbaechle

+0

当然,当我可以等待时,还有其他一些非常重要的构建C的依据。 B一建立就可以开始工作。但是我只能确定当C被构建时我的工作是正确的。 –

+1

然后你的描述有点误导是不是?为了构建“A”的正确版本,您不必提及最终需要用“C”构建的任何地方。请记住,SCons的首要任务就是提供正确的版本...最后,Build系统应该如何知道*什么时候需要最终的“A”(=使用C),还是您仍然可以开始初步工作基于不正确的“A”(=使用B)? – dirkbaechle

回答

0

你可以尝试在建造者为B或C使用SideEffect(),并且也有一个生成器来生成A.

没有试过,但它可能工作。

相关问题