一.概述
1.Meson 的簡介
Meson(The Meson Build System)是個項目構建系統,類似的構建系統有 Makefile、CMake、automake …。 Meson 是一個由 Python 實現的開源項目,其思想是,開發人員花費在構建調試上的每一秒都是浪費,同樣等待構建過程直到真正開始編譯都是不值得的。
因此,Meson 的設計目的是在用戶友好的同時不損害性能,Meson 提供客戶語言(custom language)作為主要工具,用戶可以使用它完成項目構建的描述。客戶語言的設計目標是簡單(simplicity)、清晰(clarity)、簡潔(conciseness),其中很多靈感來源于 Python 語言。
Meson 的另個一主要設計目的是為現代編程工具提供優秀的支持和最好的實現。這包括一些特性如:單元測試(unit testing)、代碼覆蓋率報告(code coverage reporting)、頭文件預編譯(precompiled headers)。用戶不需要尋找第三方宏指令(third party macros)或編寫 Shell 腳本來實現這些特性,Meson 可以開箱即用。
Meson 相比 CMake 來說,不僅僅支持 C/C++,還支持多種編程語言。
如今,很多項目都由 CMake 轉向到了 Meson,例如 DPDK 和 Mapnik。
網址:https://www.cnblogs.com/RioTian/p/17984286
2.Ninja 的簡介
項目開發中一般將 Meson 和 Ninja 配合使用,Meson 負責構建項目依賴關系,Ninja 負責編譯代碼。Ninja 是一個輕量的構建系統,主要關注構建的速度。它與其他構建系統的區別主要在于兩個方面:一是 Ninja 被設計成需要一個輸入文件的形式,這個輸入文件則由高級別的構建系統生成;二是 Ninja 被設計成盡可能快速執行構建的工具。
3.Meson 的特性
支持多種平臺,包括 Linux、macOS、Windows、GCC、Clang、Visual Studio 等
支持多種編程語言,包括 C/C++、D、Fortran、Java、Rust
支持在一個非常可讀和用戶友好的非圖靈完整 DSL 中構建定義
支持很多操作系統和裸機進行交叉編譯
支持極快的完整和增量構建而優化,而不犧牲正確性
支持與發行版包一起工作的內置多平臺依賴提供程序
4.Meson 的依賴
Meson 是依賴 Python 與 Ninja 實現的,依賴的版本如下:
Python (version 3.6 or newer)
Ninja (version 1.8.2 or newer)
版本查看: Ninja --version
二.Meson 安裝
1.Windows 平臺
a)在 Meson GitHub Releases 網站(https://github.com/mesonbuild/meson/releases)下載 Windows 版的安裝程序,如 meson-0.60.3-64.msi
b)雙擊 meson-0.60.3-64.msi 安裝程序,按默認選項直接安裝 Meson
c)在系統的 開始菜單欄 里,找到 Visual Studio 開發人員工具(Native Tools Command Prompt for VS xxxx),雙擊運行后,在 CMD 窗口內執行以下命令查看 Meson 和 Ninja 的版本
> meson --version
0.60.3
> ninja --version
1.10.2
2.通過 PyPi 安裝
Meson 可以直接通過 PyPi 安裝,但必須確保使用的是 Python3 的 pip,安裝命令如下:
# pip3 install meson ninja
或者使用標準的 Python 命令安裝 Meson
# 安裝meson
# python3 -m pip install meson
# 安裝ninja
# python3 -m pip install ninja
3.Debian/Ubuntu
# apt install -y meson ninja-build
4.Fedora/CentOS
# yum install -y meson ninja-build
# 或者
# dnf install -y meson ninja-build
三.使用Meson在windows平臺編譯Glib庫
1.下載Glib庫:https://gitlab.gnome.org/GNOME/glib/-/tree/2.84.2?ref_type=tags
2.編譯Glib庫(windows下實測ok)
tar xf glib-*.tar.gz ???????????????????# unpack the sources
cd glib-* ??????????????????????????????# change to the toplevel directory
meson setup _build ?????????????????????# configure the build
meson compile -C _build ????????????????# build GLib
ninja -C _build install
3.注意:編譯時需要連接外網,否則有些依賴包無法下載