解決問題
如果建構失敗,可能是因為 build.rs
,這類程式會在建構期間執行任意操作。根本而言,這不符合 gn
和 ninja
的設計,後者的目標是達成靜態的確定性建構規則,盡可能提高建構作業的平行處理程度和重複性。
有些 build.rs
動作可自動支援,有些則需要進一步操作:
建構指令碼效果 | gn 範本是否支援 | 您需要做的 |
---|---|---|
檢查 rustc 版本,將功能設為開啟/關閉 | 是 | 無 |
檢查平台或 CPU,將功能設為開啟/關閉 | 是 | 無 |
產生程式碼 | 是 | 是 - 在 gnrt_config.toml 中指定 |
建構 C/C++ | 否 | 撰寫修補程式 |
任意其他動作 | 否 | 撰寫修補程式 |
幸運的是,大部分 Crate 均不包含建構指令碼,而大部分建構指令碼只會執行前兩項動作。