Meson 開発の主な目標は、利便性と使いやすさを組み合わせた高速な組み立てプロセスを提供することです。 デフォルトのビルドでは、make ユーティリティの代わりにツールキットが使用されます。
GCC、Clang、Visual Studio、その他のコンパイラーを使用した Linux、macOS、Windows でのクロスコンパイルとビルドがサポートされています。 C、C++、Fortran、Java、Rust など、さまざまなプログラミング言語でプロジェクトを構築できます。インクリメンタル ビルド モードがサポートされており、最後のビルド以降に行われた変更に直接関連するコンポーネントのみが再ビルドされます。 Meson を使用すると、反復可能なビルドを生成できます。このビルドでは、異なる環境でビルドを実行すると、完全に同一の実行可能ファイルが生成されます。
メイン
- CMake ビルド スクリプトを使用する既存のプロジェクトの透過的なビルドのサポートが追加されました。 Meson は、標準のサブプロジェクトと同様に、CMake モジュールを使用して単純なサブプロジェクト (単一ライブラリなど) を直接構築できるようになりました (CMake サブプロジェクトはサブプロジェクト ディレクトリに配置できることを含みます)。
- 使用されているすべてのコンパイラについて、クロスコンパイラ用のユーザー指定フラグのテストに限定されず、単純なテスト ファイルのアセンブリと実行 (サニティ チェック) による予備テストが含まれます (今後は、現在のプラットフォームにネイティブなコンパイラもチェックされます)。 。
- オプションの前にプラットフォーム プレフィックスを指定してバインドする、クロスコンパイル中に使用されるコマンド ライン オプションを定義する機能が追加されました。以前は、コマンド ライン オプションはネイティブ ビルドのみをカバーしており、クロスコンパイルには指定できませんでした。コマンド ライン オプションは、ネイティブ ビルドかクロスコンパイルかに関係なく適用されるようになり、ネイティブ ビルドとクロス ビルドで同じ結果が得られるようになりました。
- コマンドラインで「--cross-file」フラグを複数回指定して、複数のクロスファイルをリストする機能が追加されました。
- Windows プラットフォーム (ICL.EXE および ifort) 用の ICL コンパイラー (インテル C/C++ コンパイラー) のサポートが追加されました。
- Xtensa CPU (xt-xcc、xt-xc++、xt-nm) の初期ツールキット サポートを追加しました。
- 「get_variable」メソッドが「dependency」オブジェクトに追加されました。これにより、現在の依存関係のタイプを考慮せずに変数の値を取得できるようになります(たとえば、dep.get_variable(pkg-config : 'var-名前'、cmake : 'COP_VAR_NAME));
- リンカーを呼び出すときに使用される言語を明示的に指定するために、新しいターゲット アセンブリ オプション引数「link_ language」が追加されました。たとえば、メインの Fortran プログラムは C/C++ コードを呼び出すことができ、Fortran リンカーを使用する必要がある場合に C/C++ が自動的に選択されます。
- CPPFLAGS プリプロセッサ フラグの処理が変更されました。 Meson は以前、CPPFLAGS と言語固有のコンパイル フラグ (CFLAGS、CXXFLAGS) を別々に保存していましたが、現在ではそれらは分離できずに処理され、CPPFLAGS にリストされているフラグは、それらをサポートする言語のコンパイル フラグの別のソースとして使用されます。
- Custom_target およびcustom_target[i] の出力は、link_with および link_whole 操作の引数として使用できるようになりました。
- ジェネレーターは、「depends」オプションを使用して追加の依存関係を指定できるようになりました (たとえば、generator(program_runner, Output: [‘@)[メール保護]']、依存: exe));
- find_library に静的オプションを追加して、静的にリンクされたライブラリのみを検索できるようにしました。
- python.find_installation については、Python の特定のバージョンの特定の Python モジュールの存在を確認する機能が追加されました。
- kconfigファイルを解析するための新しいモジュールunstable-kconfigを追加しました。
- 新しいコマンド「subprojects foreach」を追加しました。このコマンドは引数付きのコマンドを受け取り、すべてのサブプロジェクト ディレクトリで実行します。
出所: オープンネット.ru