スタイルの推奨事項

このページでは、Meson ビルドファイルの構成とフォーマットに関する推奨事項の一部を記載します。

タブまたはスペース?

常にスペース。2 つのスペースが最も一般的です。

末尾のコンマ?

可能であれば使用します。バージョン管理システムの差分をより見やすくすることができます。

変数の命名

スネークケース(snake_case として定型化)は、各スペースをアンダースコア(_)文字に置き換え、各単語の最初の文字を小文字で記述する記述スタイルのことです。識別子として変数を使用する Meson ビルドスクリプトで使用される最も一般的な命名規則です。

たとえば、実行可能ファイルを my_exe のようなものに参照したいとします。

依存関係の使用

dependency 関数は、依存関係を処理するための推奨される方法です。ラップファイルに必要な [provide] エントリがある場合、独自にコンパイルする場合もシステム依存関係を使用する場合も、すべて自動的に機能します。

依存関係またはプログラム以外のものを抽出する必要がある場合にのみ subproject が必要になるはずです。

オプションの命名

プロジェクトオプションには 2 つの命名方法があります。たとえば、ブール値の場合、最初のものは foo、2 番目のものは enable-foo です。最初のスタイルが推奨されます。なぜなら、Meson オプションは単なる文字列ではなく、強力な型を持つからです。

他のプロジェクトで一般的になっているものと同じようにオプションに名前を付けるよう努める必要があります。これは、オプションを生成する場合に特に重要です。親プロジェクトとサブプロジェクトのオプションの両方に同じ名前が必要になるからです。

グローバル引数

add_global_arguments ではなく add_project_arguments を優先してください。後者を使用すると、プロジェクトをサブプロジェクトとして使用できなくなります。

クロスコンパイル引数

できるだけクロスコンパイル引数をビルドファイルから遠ざけてください。代わりに、クロスファイルに入れておきます。これにより、別のプラットフォームにコンパイルするために必要なすべての変更が 1 か所に分離されるため、移植性が向上します。

ソースパスのソート

ソースファイルの配列をすべてソートする必要があります。これによりエラーが発生しにくくなり、マージの競合が減少する場合が多くなります。さらに、パスを自然なソートアルゴリズムでソートする必要があります。そうすることで、数値が直感的にソートされます(1, 2, 3, 10, 20 ではなく 1, 10, 2, 20, 3)。

数値も文字の前にソートする必要があります(a111ab0 の前)。さらに、文字列は区別せずにソートする必要があります。

さらに、パスにディレクトリが含まれる場合は、通常のファイルの前にソートする必要があります。このルールはサブディレクトリにも再帰的に適用されます。

以下の例は、ソースリストの定義が正しいことを示しています。

sources = files(
  'aaa/a1.c',
  'aaa/a2.c',
  'bbb/subdir1/b1.c',
  'bbb/subdir2/b2.c',
  'bbb/subdir10/b3.c',
  'bbb/subdir20/b4.c',
  'bbb/b5.c',
  'bbb/b6.c',
  'f1.c',
  'f2.c',
  'f10.c',
  'f20.c',
)

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