Mesonの実行

Mesonを起動するには、2つの異なる方法があります。1つは、ソースツリーから直接コマンド/path/to/source/meson.pyで実行する方法です。2つ目は、Mesonがインストールされている場合に、単にmesonというコマンドを使用する方法です。このマニュアルでは、簡単のため後者の形式のみを使用します。

執筆時点では、Mesonのコマンドラインバージョンのみが利用可能です。つまり、Mesonはターミナルを使用して起動する必要があります。MSVCコンパイラを使用する場合は、「Visual Studioコマンドプロンプト」でMesonを実行する必要があります。

利用可能なすべてのMesonコマンドは、コマンドリファレンスページにリストされています。

ビルドディレクトリの設定

Mesonビルドシステムを持つソースツリーがあることを想定してみましょう。これは、最上位ディレクトリにmeson.buildというファイルがあることを意味します。ビルドを開始するには、次のコマンドを実行します。

cd /path/to/source/root
meson setup builddir

Mesonをsetupコマンドで起動し、ビルドディレクトリの場所を指定します。Mesonは、アウトオブソースビルドを使用します。

ヒント:Mesonの構文はmeson [command] [arguments] [options]です。setupコマンドは、builddirsrcdirの引数を取ります。srcdirが指定されていない場合、Mesonはpwdmeson.buildの場所に基づいてsrcdirを推測します。

Mesonは次に、ビルド構成ファイルをロードし、対応するビルドバックエンドをビルドディレクトリに書き込みます。デフォルトでは、Mesonはデバッグビルドを生成します。これは、基本的な警告とデバッグ情報をオンにし、コンパイラの最適化を無効にします。

さらに、起動時にオプションをMesonに渡すことができます。オプションのリストはこちらに記載されています。

--buildtypeコマンドライン引数を使用して、異なるタイプのビルドを指定できます。次のいずれかの値を設定できます。

意味
plain コンパイラの警告の場合でも、追加のビルドフラグは使用されません。ディストリビューションのパッケージャーや、すべて引数を自分で指定する必要がある場合に便利です。
debug デバッグ情報は生成されますが、結果は最適化されません。これがデフォルトです。
debugoptimized デバッグ情報が生成され、コードが最適化されます(ほとんどのコンパイラでは、これは-g -O2を意味します)。
release 完全な最適化、デバッグ情報なし

ビルドディレクトリは必須です。これは、ビルドプロセスを大幅に簡素化するためです。Mesonは、いかなる状況下でもソースディレクトリ内にファイルを書き込みません(書き込んだ場合はバグであり、修正する必要があります)。これは、ユーザーがリビジョンコントロールの無視リストに多数のファイルを追加する必要がないことを意味します。また、任意のソースツリーに対して任意の数のビルドディレクトリを作成できることも意味します。

たとえば、システムデフォルトの代わりにClangコンパイラでソースコードをビルドすることをテストしたい場合は、次のコマンドを入力するだけで済みます。

cd /path/to/source/root
CC=clang CXX=clang++ meson setup buildclang

この分離は、コードに複数の構成オプション(複数のデータバックエンドなど)がある場合にさらに強力です。それぞれに個別のサブディレクトリを作成できます。最適化されたビルド、コードカバレッジ、静的分析などのビルドディレクトリを持つこともできます。それらはすべてきれいに分離されており、同じソースツリーを使用します。異なる構成間の変更は、対応するディレクトリに変更するだけです。

特に明記されていない限り、後続のすべてのコマンドライン呼び出しは、ソースディレクトリで実行されることを意味します。

デフォルトでは、MesonはNinjaバックエンドを使用してプロジェクトをビルドします。他のバックエンドを使用する場合は、構成時に対応する引数を渡す必要があります。例として、Mesonを使用してVisual Studioソリューションを生成する方法を以下に示します。

meson setup <build dir> --backend=vs

その後、生成されたソリューションをVisual Studioで開き、通常の方法でコンパイルできます。バックエンドのリストは、meson setup --helpで取得できます。

環境変数

追加のコンパイラフラグを追加したい場合があります。これは、Mesonを呼び出すときに環境変数で渡すことで実行できます。すべての環境変数のリストについては、リファレンステーブルを参照してください。ただし、これらの環境変数はネイティブコンパイラでのみ使用され、クロスコンパイルに使用されるコンパイラには影響しません。クロスファイルで指定されたフラグが使用されます。

さらに、--buildtype=plainオプションを使用すると、Mesonがフラグを自分で追加するのを停止できます。この場合、必要なコンパイラとリンカーの引数をすべて提供する必要があります。

ソースからのビルド

ビルドを開始するには、次のコマンドを入力するだけです。

meson compile -C builddir

詳細については、meson compileの説明を参照してください。

ninjaで直接ビルド

デフォルトでは、MesonはNinjaビルドシステムを使用して実際にコードをビルドします。ビルドを開始するには、次のコマンドを入力するだけです。

ninja -C builddir

NinjaとMakeの主な使いやすさの違いは、NinjaがコンピューターのCPU数を自動的に検出し、それに応じて並列化することです。コマンドライン引数-j <num processes>を使用して、使用する並列プロセスの量をオーバーライドできます。

最初の構成ステップの後、ninjaはコンパイルするために入力する必要がある唯一のコマンドであることに注意する必要があります。ソースツリーを(完全に新しい場所に移動するのではなく)どのように変更しても、Mesonは変更を検出し、それに応じて自身を再生成します。これは、複数のビルドディレクトリがある場合に特に便利です。多くの場合、それらの1つは開発に使用され(「デバッグ」ビルド)、その他は時々のみ使用されます(「静的分析」ビルドなど)。任意の構成は、対応するディレクトリにcdし、Ninjaを実行するだけでビルドできます。

テストの実行

Mesonは、テストの実行をネイティブにサポートしています。それを行うためのコマンドは簡単です。

meson test -C builddir

詳細については、meson testの説明を参照してください。

Mesonは、特定のテストフレームワークの使用を強制しません。GTest、Boost Test、Check、またはカスタム実行可能ファイルを使用してもかまいません。

注:次のコマンドを使用して、ninjaで直接起動することもできます。

ninja -C builddir test

インストール

ビルドされたソフトウェアのインストールも同様に簡単です。

meson install -C builddir

詳細については、meson installの説明を参照してください。

Mesonは、ターゲットのインストールに関するドキュメントで詳述されているように、インストール可能として明示的にタグ付けされたビルドターゲットのみをインストールすることに注意してください。

デフォルトでは、Mesonは/usr/localにインストールされます。これは、構成時にコマンドライン引数--prefix /your/prefixをMesonに渡すことで変更できます。Mesonは、パッケージのビルドなどで使用されるDESTDIR変数もサポートしています。これは次のように使用されます。

DESTDIR=/path/to/staging meson install -C builddir

注:次のコマンドを使用して、ninjaで直接起動することもできます。

ninja -C builddir install

コマンドラインヘルプ

Mesonには標準のコマンドラインヘルプ機能があります。これは、次のコマンドでアクセスできます。

meson --help

終了ステータス

Mesonは、成功した場合はステータス0、コマンドラインまたはmeson.buildファイルに問題がある場合は1、内部エラーの場合は2で終了します。

検索結果は次のとおりです