介子構建系統版本 1.0

Meson 1.0.0 構建系統版本已經發布,用於構建 X.Org Server、Mesa、Lighttpd、systemd、GStreamer、Wayland、GNOME 和 GTK 等項目。 Meson 代碼是用 Python 編寫的,並在 Apache 2.0 許可下獲得許可。

Meson 的主要開發目標是提供一種結合便利性和易用性的高速組裝過程。 默認情況下,構建使用 Ninja 工具包而不是 make,但也可以使用其他後端,例如 xcode 和 VisualStudio。 該系統有一個內置的多平台依賴處理程序,允許您使用 Meson 為分發構建包。 彙編規則以簡化的領域特定語言設置,它們對用戶來說具有很好的可讀性和理解性(根據作者的想法,開發人員應該花最少的時間來編寫規則)。

支持使用 GCC、Clang、Visual Studio 和其他編譯器在 Linux、Illumos/Solaris、FreeBSD、NetBSD、DragonFly BSD、Haiku、macOS 和 Windows 上交叉編譯和構建。 可以使用各種編程語言構建項目,包括 C、C++、Fortran、Java 和 Rust。 支持增量構建模式,其中僅重建與自上次構建以來所做更改直接相關的組件。 Meson 可用於生成可重複構建,在不同環境中運行構建會產生完全相同的可執行文件。

Meson 1.0的主要創新點:

  • 用於用 Rust 語言構建項目的模塊已被宣布穩定。 該模塊在 Mesa 項目中用於構建用 Rust 編寫的組件。
  • 大多數編譯器檢查函數都支持前綴選項,它實現了處理字符串以外的數組的能力。 例如,現在您可以指定: cc.check_header('GL/wglew.h', prefix : ['#include ', '#包括'])
  • 添加了新的“--workdir”參數,允許您覆蓋工作目錄。 例如,要使用當前目錄而不是工作目錄,可以運行: meson devenv -C builddir --workdir 。
  • 提出了新的運算符“in”和“not in”來確定字符串中子字符串的出現,類似於以前可用的檢查數組或字典中元素是否出現的方法。 例如: fs = import('fs') if 'something' in fs.read('somefile') # True endif
  • 添加了“warning-level=everything”選項以打開所有可用編譯器警告的輸出(在clang 和MSVC 中使用-Weverything 和/Wall,並且在GCC 中包含單獨的警告,大致對應於clang 中的-Weverything 模式)。
  • rust.bindgen 方法實現了處理“依賴項”參數的功能,以將路徑傳遞給編譯器應處理的依賴項。
  • java.generate_native_headers 函數已被棄用並重命名為 java.native_headers 以匹配 Meson 的通用函數命名風格。

來源: opennet.ru

添加評論