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.

沒有試過,但它可能工作。