引数の追加

追加コンパイラ引数を指定することがよく必要になります。Mesonにはこれを達成するための2つの異なる方法、グローバル引数とターゲットごとの引数があります。

グローバル引数

グローバルコンパイラ引数は以下のコマンドを使用して設定します。一例として、以下のようになります。

add_global_arguments('-DFOO=bar', language : 'c')

これにより、MesonはすべてのCコンパイルに定義を追加します。通常は、グローバル設定フラグにこの設定を使用します。C/C++言語標準(GCCの-std=c99引数)を設定するには、おそらくproject()関数のデフォルトオプションを使用する必要があります。詳細はリファレンスマニュアルを参照してください。

グローバル引数には特定の制限があります。これらはすべて、ビルドターゲットが指定される前に定義する必要があります。これにより、1つの例外を除いて、プロジェクト全体で構築されたすべてのソースファイルについてグローバルフラグが同じになることが保証されます。プロジェクト構成の一部として実行されるコンパイルテストは、これらのフラグを使用しません。その理由は、ビルドセットアップを決定するために、指定されたフラグを使用して、およびそのフラグを使用せずにテストコンパイルを実行する必要がある可能性があるためです。この理由から、テストではこれらのグローバル引数は使用されません。

この設定では、最も重要なフラグのみを設定する必要があります。デバッグフラグまたは最適化フラグは設定しないでください。代わりに、適切なビルドタイプを選択してそれらを指定する必要があります。

プロジェクト引数

プロジェクト引数はグローバル引数と同様に機能しますが、現在のサブプロジェクト内でのみ有効です。使い方は簡単です。

add_project_arguments('-DMYPROJ=projname', language : 'c')

これにより、現在のプロジェクト内のすべてのCソースにコンパイラフラグが追加されます。

ターゲットごとの引数

ターゲットごとの引数は定義するのも同様です。

executable('prog', 'prog.cc', cpp_args : '-DCPPTHING')

ここでは、コンパイル時に使用される追加の引数を指定してC++実行ファイルを作成しますが、リンクには使用されません。

他の言語のパラメータ名はリファレンステーブルで確認できます。

追加のリンカ引数の指定は、同じ方法で行われます。

executable('prog', 'prog.cc', link_args : '-Wl,--linker-option')

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