1. 中間子とは何ですか?
Meson は、迅速にビルドできるように設計されたコンパイル システムであり、Linux、Windows、MacOS をサポートする複数のプラットフォーム上でビルドできます。C/C++ のコンパイルをサポートするだけでなく、D、Fortran、Java、Rust などの言語もサポートします。
Meson は Python3 に基づいて実装されており、Ninja に依存しています。中間子と忍者はお互いを補完します。Meson がプロジェクトの依存関係の構築を担当し、Ninja がコンパイルを行います。Ninja も軽量なコンパイル システムです。Ninja については、後で機会を見つけて紹介します。
Meson の公式 Web サイトは次のとおりです: https://mesonbuild.com
2.インストール
-
インストールし
Python3
てpip3
-
インストール
Ninja
適切な方法:
$ sudo apt-get install ninja-build
pip3 方法:
$ pip3 install ninja
-
インストール
Meson
$ pip3 install meson
apt 方式でもインストールできますが、ソースの関係上、インストールされるバージョンが比較的低い場合があるため、apt 方式でのインストールをお勧めします
pip3
。
3. ハローワールド
このセクションでは、Meson を使用して簡単な C 言語プログラムを構築します。
-
C 言語の hello world プログラムを作成します。
#include <stdio.h> int main(int argc, char **argv) { printf("Hello there.\n"); return 0; }
-
同じディレクトリにコンパイル スクリプトを作成します
meson.build
。project('tutorial', 'c') executable('demo', 'main.c')
-
コンパイル ディレクトリを設定します (builddir はディレクトリ名で、コンパイルによって生成されたすべてのファイルはこのディレクトリに自動的に保存されます)。
$ meson setup builddir
実行後、システムはプロジェクトの構成情報を出力します。
The Meson build system Version: 1.0.0 Source dir: /home/xupeng/work/project/tmp/meson Build dir: /home/xupeng/work/project/tmp/meson/builddir Build type: native build Project name: tutorial Project version: undefined C compiler for the host machine: ccache cc (gcc 5.4.0 "cc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609") C linker for the host machine: cc ld.bfd 2.26.1 Host machine cpu family: x86_64 Host machine cpu: x86_64 Build targets in project: 1
-
コンパイル ディレクトリを入力してコードをコンパイルします。
$ cd builddir $ ninja # 或者 $ cd builddir $ meson compile
元のディレクトリで直接コンパイルすることもできます。
$ meson compile -C builddir
実行後、システムはコンパイル情報を出力します。
INFO: autodetecting backend as ninja INFO: calculating backend command to run: /usr/bin/ninja [2/2] Linking target demo
-
コンパイルが成功すると、ターゲットの実行可能ファイルのデモがコンパイル ディレクトリに生成されます。
$ ./demo Hello there.
4. ライブラリをコンパイルする
先ほどは Meson を使用して実行可能ファイルをコンパイルしましたが、so ライブラリをコンパイルする必要がある場合は、次のようにmeson.build
調整するだけで済みます。
project('tutorial', 'c')
# 将编译可执行文件的方式改成编译库的方式
# executable('demo', 'main.c')
library('demo', 'main.c')
再度実行するmeson compile
と、コンパイルディレクトリに対象ライブラリが生成されますlibdemo.so
。
5. 中間子スクリプト
Meson のコンパイル設定とスクリプトは で記述されているmeson.build
ため、さまざまなコンパイル設定を実行したい場合は、スクリプトを完成させるだけで済みます。Meson は、より柔軟で強力な構成を行うための一連の構文と API を提供します。
構文的には、Meson は Python3 をベースに実装されているため、Meson スクリプトの構文は Python に非常によく似ていますが、詳しくは公式 Web サイトの構文セクション https://mesonbuild.com/Syntax.html を参照してください。
その他のコンパイル設定とスクリプトには主に次のものがあります。
- コンパイルの種類 - 実行可能ファイルとしてコンパイルするかライブラリとしてコンパイルするかを構成します
- header file - 設定が依存するヘッダー ファイルへのパス
- インストール - 実行
meson install
後の - パラメータ - コンパイル時の構成入力パラメータ
- 依存関係 - コンパイル時の構成時の依存関係ライブラリ
- スレッド - コンパイル時にスレッドを構成します
- externalcommand - 外部シェルコマンドを実行します。
- 生成 - コードの事前構成
- test - 単体テストをコンパイルして実行します
- クロスコンパイル - クロスコンパイル情報の構成
- コンパイル オプション -
meson_options.txt
コンパイルされたモジュールの動的構成 - サブプロジェクト - サブプロジェクトの構成
このように設定できる項目はまだまだたくさんありますので、詳細は公式サイト https://mesonbuild.com/Manual.html のマニュアルセクションを参照してください。