xmake v2.3.2 發佈, 帶來和ninja同樣快的構建速度

這個版本重點重構優化了下內部並行構建機制,實現多個target間源文件的並行編譯,以及並行link的支持,同時優化了xmake的一些內部損耗,修復影響編譯速度的一些bug。
經過測試對比,目前的總體構建速度基本跟ninja持平,相比cmake/make, meson/ninja都快了很多,由於它們還額外多了一步生成makefile/build.ninja的過程。android

另外,xmake還增長了對sdcc編譯工具鏈的支持,用於編譯51/stm8等嵌入式程序。git

一些優化點

  1. 多個target間全部源文件同時並行構建(以前不能跨target,中途會被link給堵住串行化)
  2. 多個無依賴的target的link能夠並行執行(以前只能挨個執行link)
  3. 修復以前的任務調度bug,更加細粒度化調度,充分利用cpu core資源
  4. 優化xmake內部api上的一些損耗,這塊效果也很明顯

更多優化細節能夠看下:issue #589github

構建速度對比

咱們在termux和macOS上作了一些對比測試,測試工程在: xmake-coreshell

對於相對比較多的target的項目,新版xmake對其構建速度的提高更加明顯。windows

多任務並行編譯測試

構建系統 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 發佈!
相關文章
相關標籤/搜索