名前

meson - 生産性の高いビルドシステム

説明

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 ]
 

オプション:

--version
バージョン番号を表示します。
--help
コマンドラインヘルプを表示します。

configure コマンド

meson configure は、 コマンドラインから Meson プロジェクトを設定するものです。 その利用の仕方は以下のように簡単です。
 
meson configure [ build directory ] [ options to set ]
 
ビルドディレクトリが省略された場合は、 カレントディレクトリが用いられます。
 
パラメーターが何も設定されなかった場合、 meson configure はすべてのビルドオプションの値をコンソールに出力します。
 
値を設定するには、 以下のようにコマンドライン引数 -D を利用します。
 
meson configure -Dopt1=value1 -Dopt2=value2
 

イントロスペクト (introspect) コマンド

Meson の introspect は、 他のツール、 たとえば IDE などとの連携を簡単に実現するように設計されたコマンドです。 このコマンドの出力は JSON 形式です。
 
meson introspect [ build directory ] [ option ]
 
ビルドディレクトリが省略された場合は、 カレントディレクトリが用いられます。
 

オプション:

--targets
トップレベルターゲット (実行モジュール、ライブラリなど) をすべて表示します。
--target-files
指定されたターゲットに対するソースファイルを表示します。
--buildsystem-files
ビルドシステムを構成するファイル (meson.build、meson_options.txt など) をすべて表示します。
--tests
ユニットテストをすべて表示します。
--help
コマンドラインヘルプを表示します。

テストコマンド

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
 

オプション:

--repeat
指定された回数分だけテストを実行します。
--gdb
gdb のもとでテストを実行します。
--list
利用可能なテストをすべて一覧表示します。
--wrapper
指定されたラッパー (たとえば valgrind) 経由によりすべてのテストを起動します。
-C
テスト実施前に、 指定されたディレクトリに移動します (これはビルドディレクトリの最上位でなければなりません)。
--suite
このスイートにおいてテストを実行します。
--no-suite
このスイートの中ではテストを実行しません。
--no-stdsplit
テストログにおいて stderr と stdout を分割しません。
--benchmark
テストの代わりにベンチマークを実行します。
--logbase
テストログ出力に利用するファイルのベース名を指定します。
--num-processes
テスト実行における同時並行処理数を指定します。
--verbose
stdout と stderr にリダイレクトしません。
-t
テストにおけるタイムアウト値の乗数を指定します (通常 Valgrind に対しては 100 などとします)。
--setup
指定されたテストのセットアップを用います。

ラップ (wrap) コマンド

ラップツール (wraptool) は、 オンラインの wrabdb サービスを利用して、 ソースの依存関係を管理するヘルパーユーティリティーです。
 
meson wrap < command > [ options ]
 
このコマンドは、 プロジェクトの最上位ソースディレクトリにおいて実行することが必要です。
 

コマンド

list
利用可能なプロジェクトの一覧を表示します。
search
プロジェクト名で検索します。
install
プロジェクトを指定された名前を用いてインストールします。
update
指定されたプロジェクトを、 利用可能な最新バージョンにアップデートします。
info
指定されたプロジェクトの利用可能バージョンを表示します。
status
現在利用されているサブプロジェクトに対して、 インストールされている、 または利用可能なバージョンを表示します。

終了ステータス

0
正常終了。
1
利用エラー。 つまり meson.build の解析または実行エラー。
2
内部エラー。
125
meson test において必要なターゲットが再ビルドできなかったことを表します。

関連項目

http://mesonbuild.com/
 
https://wrapdb.mesonbuild.com/