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 為分發構建包。 彙編規則以簡化的領域特定語言設置,它們對用戶來說具有很好的可讀性和理解性(根據作者的想法,開發人員應該花最少的時間來編寫規則)。
支援交叉編譯和彙編。 LinuxIllumos/Solaris、FreeBSD、NetBSD、DragonFly BSD、Haiku、 macOS и Windows Meson 支援使用 GCC、Clang、Visual Studio 等編譯器。專案可以用多種程式語言構建,包括 C、C++、Fortran、Java 和 Rust。它支援增量建置模式,該模式僅重新建置與上次建置後所做的變更直接相關的元件。 Meson 可用於建立可重複的構建,在不同的環境中運行構建將產生完全相同的可執行檔。
Meson 1.0的主要創新點:
- 用於用 Rust 語言構建項目的模塊已被宣布穩定。 該模塊在 Mesa 項目中用於構建用 Rust 編寫的組件。
- 大多數編譯器檢查函數都支援 prefix 參數,現在除了字串之外,還支援處理數組。例如,您現在可以指定: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
