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
- コマンドラインヘルプを表示します。
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
]
ビルドディレクトリが省略された場合は、
カレントディレクトリが用いられます。
- --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
- 指定されたテストのセットアップを用います。
ラップツール (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/