Meson はプログラマーの生産性を最適化するために設計されたビルドシステムです。 これを実現するために、 最新のソフトウェア開発ツールや技法を、 簡単にすぐ利用できる機能を提供しています。 それはたとえば、 ユニットテスト、 網羅性レポート、 Valgrind、 Ccache などです。
メインの実行コマンド meson には数多くのサブコマンドがあり、 これによって全機能の利用が可能になります。
Meson を用いるのは実に簡単です。 ビルドシステムのほとんどにおいて、 普通は二段階プロセスを実現します。 一度めは Meson を実行してビルド設定を行います。
meson setup [ options ] [ build directory ] [ source directory ]
なおビルドディレクトリは、 ソースディレクトリとは別のところにしなければなりません。 Meson ではソースディレクトリ内でのビルドには対応していないため、 これを行うとエラーが発生します。
設定ステップが正常処理されたら、 ビルドディレクトリ内において実際のビルドコマンドを実行してソースをビルドできます。 Meson のデフォルトのバックエンドは Ninja です。 これは以下のようにして起動できます。
ninja [ target ]
Meson コマンドを実行するのは、 ビルドディレクトリにおいて最初に設定を行う一度だけです。 これを行ったら、 次はビルドコマンドを実行するだけです。 Meson はソースツリー内の変更を自動的に検出して、 プロジェクトビルドに必要となるファイルをすべて再生成します。
セットアップコマンドを実行するのがデフォルトの動作です。 特に何かコマンドが指定されない限り、 Meson はセットアップを行うものとして動作します。 セットアップコマンドを用いなくても、 ビルドディレクトリは以下のようにしてセットアップすることができます。
meson [ options ] [ build directory ] [ source directory ]
meson configure は、 コマンドラインから Meson プロジェクトを設定するものです。 その利用の仕方は以下のように簡単です。
meson configure [ build directory ] [ options to set ]
ビルドディレクトリが省略された場合は、 カレントディレクトリが用いられます。
パラメーターが何も設定されなかった場合、 meson configure はすべてのビルドオプションの値をコンソールに出力します。
値を設定するには、 以下のようにコマンドライン引数 -D を利用します。
meson configure -Dopt1=value1 -Dopt2=value2
Meson の introspect は、 他のツール、 たとえば IDE などとの連携を簡単に実現するように設計されたコマンドです。 このコマンドの出力は JSON 形式です。
meson introspect [ build directory ] [ option ]
ビルドディレクトリが省略された場合は、 カレントディレクトリが用いられます。
meson test は Meson を利用してプロジェクトのテストスイートを実行するヘルパーツールです。 テスト実行を行うデフォルトの方法は、 以下のようにデフォルトのビルドコマンドを実行することです。
ninja [ test ]
meson test では、テスト実行に対して機能豊富なツールセットを提供しています。
meson test はバックエンドとして Ninja を利用する場合には、 テスト実行に必要となるターゲットを自動的に再ビルドします。 ビルドに失敗すると meson test は終了コードとして 125 を返します。 この返り値コードは git bisect run にあたって、 カレントなコミットをスキップします。 したがって git を用いた bisect 処理は、 以下のようにわかりやすく実現できます。
git bisect run meson test -C build_dir
ラップツール (wraptool) は、 オンラインの wrabdb サービスを利用して、 ソースの依存関係を管理するヘルパーユーティリティーです。
meson wrap < command > [ options ]
このコマンドは、 プロジェクトの最上位ソースディレクトリにおいて実行することが必要です。
https://wrapdb.mesonbuild.com/