概要

Mesonは、パフォーマンスを犠牲にすることなく、可能な限りユーザーフレンドリーに設計されたビルドシステムです。これを実現する主なツールは、ユーザーがビルドの構造を記述するために使用するカスタム言語です。この言語の主な設計目標は単純さ、明瞭さ、簡潔さでした。読みやすさという点で定評があるPythonプログラミング言語から多くのインスピレーションが得られました。Pythonで以前プログラミングを行ったことがない人にとっても読みやすいとされています。

もう1つの主なアイデアは、最新のプログラミングツールとベストプラクティスに対するファーストクラスのサポートを提供することでした。これらには、ユニットテスト、コードカバレッジレポート、事前コンパイルされたヘッダなど、さまざまな機能が含まれます。これらの機能はすべて、Mesonを使用しているすべてのプロジェクトで即座に活用できます。ユーザーはサードパーティのマクロを探したり、シェルスクリプトを書いてこれらの機能を取得する必要はありません。すぐに利用できるはずです。

この利便性は、使い勝手の悪さの犠牲となるべきではありません。多くのソフトウェアのビルドでは、非正統的な手順が必要になります。一般的な例としては、最初にカスタムツールを構築してから、そのツールを使用してビルドするソースコードをさらに生成する必要があります。この機能はサポートされており、システムの他の部分と同じくらい使いやすくする必要があります。

用語

Mesonは、CMakeやGNU Autotoolsなどの他の一般的なビルドシステムの全体的な構造に従います。つまり、ビルドは「構成手順」と「ビルド手順」という2つの個別の手順に分けられます。最初のステップは、システムを調査し、依存関係をチェックし、ビルドの構成に必要なその他すべてのステップを実行します。その後、実際のビルドシステムを生成します。2番目のステップは、この生成されたビルドシステムを実行するだけです。最終結果は「ビルドターゲット」の集まりであり、通常は実行可能ファイルと共有ライブラリとスタティックライブラリです。

ソースコードが含まれるディレクトリを「ソースディレクトリ」と呼びます。対応して、出力が書き込まれるディレクトリを「ビルドディレクトリ」と呼びます。他のビルドシステムでは、これら2つは同じディレクトリであることが一般的です。これは「ソース内ビルド」と呼ばれます。ビルドディレクトリが別個である場合は、「ソース外ビルド」と呼ばれます。

Mesonを他のほとんどのビルドシステムと差別化しているのは、独立したビルドディレクトリを強制することです。ビルドシステムによって作成されたすべてのファイルはビルドディレクトリに格納されます。実際、ソース内ビルドを実行することは不可能です。ソースツリー内でビルドすることに慣れている人にとっては、これは不必要な複雑さのように思えるかもしれません。ただし、ソース外ビルドのみを実行することで得られる利点はいくつかあります。これについては次の章で説明します。

ソースコードがビルドされると、通常、「ユニットテスト」のセットが実行されます。これらにより、プログラムが想定どおりに動作することが確認されます。その場合、ビルド結果は「インストール」することができ、その後、使用できるようになります。

検索の結果