這個版本重點重構優化了下內部并行構建機制,實作多個target間源檔案的并行編譯,以及并行link的支持,同時優化了xmake的一些內部損耗,修復影響編譯速度的一些bug, 通過測驗對比,目前的整體構建速度基本跟ninja持平,相比cmake/make, meson/ninja都快了不少,因為它們還額外多了一步生成makefile/build.ninja的程序,
另外,xmake還增加了對sdcc編譯工具鏈的支持,用于編譯51/stm8等嵌入式程式,
- 專案原始碼
- 官方檔案
一些優化點
- 多個target間所有源檔案同時并行構建(之前不能跨target,中途會被link給堵住串行化)
- 多個無依賴的target的link可以并行執行(之前只能挨個執行link)
- 修復之前的任務調度bug,更加細粒度化調度,充分利用cpu core資源
- 優化xmake內部api上的一些損耗,這塊效果也很明顯
更多優化細節可以看下:issue #589
構建速度對比
我們在termux和macOS上做了一些對比測驗,測驗工程在: xmake-core
對于相對比較多的target的專案,新版xmake對其構建速度的提升更加明顯,
多任務并行編譯測驗
| 構建系統 | Termux (8core/-j12) | 構建系統 | MacOS (8core/-j12) |
|---|---|---|---|
| xmake | 24.890s | xmake | 12.264s |
| ninja | 25.682s | ninja | 11.327s |
| cmake(gen+make) | 5.416s+28.473s | cmake(gen+make) | 1.203s+14.030s |
| cmake(gen+ninja) | 4.458s+24.842s | cmake(gen+ninja) | 0.988s+11.644s |
單任務編譯測驗
| 構建系統 | Termux (-j1) | 構建系統 | MacOS (-j1) |
|---|---|---|---|
| xmake | 1m57.707s | xmake | 39.937s |
| ninja | 1m52.845s | ninja | 38.995s |
| cmake(gen+make) | 5.416s+2m10.539s | cmake(gen+make) | 1.203s+41.737s |
| cmake(gen+ninja) | 4.458s+1m54.868s | cmake(gen+ninja) | 0.988s+38.022s |
更新內容
新特性
- 添加powershell色彩主題用于powershell終端下背景色顯示
- 添加
xmake --dry-run -v命令去空運行構建,僅僅為了查看詳細的構建命令 - #712: 添加sdcc平臺,并且支持sdcc編譯器
改進
- #589: 改進優化構建速度,支持跨目標間并行編譯和link,編譯速度和ninja基本持平
- 改進ninja/cmake工程檔案生成器插件
- #728: 改進os.cp支持保留源目錄結構層級的遞回復制
- #732: 改進find_package支持查找homebrew/cmake安裝的包
- #695: 改進采用android ndk最新的abi命名
Bugs修復
- 修復windows下link error顯示問題
- #718: 修復依賴包下載在多鏡像時一定概率快取失效問題
- #722: 修復無效的包依賴導致安裝死回圈問題
- #719: 修復windows下主行程收到ctrlc后,.bat子行程沒能立即退出的問題
- #720: 修復compile_commands生成器的路徑轉義問題
本文由博客一文多發平臺 OpenWrite 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/47125.html
標籤:C++
上一篇:生產者消費者演算法模擬 c++
下一篇:軟體工程第三次作業
