允許user自由選擇要組成software package的system software (kernel, device driver, system utilities, …)
Build system會幫忙檢查每一項system software需要的dependency software是否也被包在software package內,沒有被包含在內的system software也會被加入。
例如: user挑選software package後,build system會檢查dependency software是否有包含,未包含的dependency software會被build system加入
Build automation flow config: 用來定義build flow
例如: makefile
System software components可以依據不同的SW+HW system、功能需求、debug需求建立不同的build automation config
例如: 一份device driver有兩種不同需求,可以根據不同目的性定出兩份makefile
Build system會依照configuration的參數挑選不同的build automation config使用在build flow
例如: configuration有一個參數是開發階段,開發階段若設定成開發初期,會使用方便debug的device driver makefile,開發階段若設定成開發後期,則會使用效能較佳的device driver makefile
有一些build system會依照configuration產生出build automation flow config,而無須手動建立 (例如: cmake提供一系列的command與條件判斷給user操作,藉此自動產生makefile)
Build system會協助在system software的build flow開始之前安排好需要的build environment
Build system的build configuration對於user來說是portable的,使用同一套build system在不同的software platform上運作,build configuration不需要修改或只需要少量的修改即可
Build system會有版本控制,所以user可以測試並找出和自己寫的build configuration搭配最為良好的版本的build system再使用,不須擔心因為build system進版有問題使得build configuration也出問題
新的system software加入或者原有的system software需要修改時,因為有build system及build configuration的規則可以遵守,其他software developer不需要負責整合增改的system software,工作效率會因此變高。
今天我們介紹了build system的內部功能與相關特色,接下來我們會介紹build system如何建立build environment。