Meson ビルド システム リリース 1.3

Meson 1.3.0 ビルド システムのリリースが公開されました。これは、X.Org Server、Mesa、Lighttpd、systemd、GStreamer、Wayland、GNOME、GTK などのプロジェクトのビルドに使用されます。 Meson コードは Python で書かれており、Apache 2.0 ライセンスに基づいてライセンスされています。

Meson の主な開発目標は、利便性と使いやすさを組み合わせた高速組み立てプロセスを提供することです。 デフォルトでは、ビルドでは make の代わりに Ninja ツールキットが使用されますが、xcode や VisualStudio などの他のバックエンドも使用できます。 このシステムには、Meson を使用してディストリビューション用のパッケージを構築できるマルチプラットフォーム依存関係ハンドラーが組み込まれています。 アセンブリ ルールは、簡略化されたドメイン固有の言語で設定されており、ユーザーにとって読みやすく、理解しやすいものになっています (著者の考えによれば、開発者はルールの作成に最小限の時間を費やす必要があります)。

GCC、Clang、Visual Studio およびその他のコンパイラーを使用した、Linux、Illumos/Solaris、FreeBSD、NetBSD、DragonFly BSD、Haiku、macOS、および Windows でのクロスコンパイルとビルドがサポートされています。 C、C++、Fortran、Java、Rust など、さまざまなプログラミング言語でプロジェクトを構築できます。 インクリメンタル ビルド モードがサポートされており、最後のビルド以降に行われた変更に直接関連するコンポーネントのみが再ビルドされます。 Meson を使用すると、反復可能なビルドを生成できます。異なる環境でビルドを実行すると、完全に同一の実行可能ファイルが生成されます。

Meson 1.3 の主な革新:

  • オプション「werror: true」をコンパイラ チェック メソッド COMPILER.COMILES()、COMPILER.LINKS()、COMPILER.RUN() に追加しました。これは、コンパイラの警告をエラーとして扱います (コードが警告なしでビルドされていることを確認するために使用できます) )。
  • プリプロセッサによるシンボル定義をチェックするための has_define メソッドを追加しました。
  • Macro_name パラメータが configure_file() 関数に追加され、C 言語のマクロ スタイルで設計された「#include」 (「インクルード ガード」) による二重接続のマクロ保護が追加されました (動的な設定ファイルの作成が簡素化されています)。マクロ名)。
  • 新しい出力形式がconfigure_file() - JSON ("output_format: json")に追加されました。
  • c_std および cpp_std パラメーターに値のリストを使用する機能を追加しました (例: 「default_options: 'c_std=gnu11,c11''」)。
  • CustomTarget を使用してファイルを処理するモジュールに、ninja ユーティリティによって出力されるメッセージをカスタマイズする機能が追加されました。
  • build_target「jar」は非推奨となり、代わりに「jar()」呼び出しが推奨されます。
  • 「env」パラメータがgenerator.process()メソッドに追加され、ジェネレータが入力を処理する環境変数を設定します。
  • 実行可能ファイルに関連付けられたビルド ターゲット名を指定する場合、「executable('foo', 'main.c', name_suffix: 'bar')」などのサフィックスを使用して、同じディレクトリに追加の実行可能ファイルを生成できます。
  • 「vs_module_defs」パラメータを exectuable() 関数に追加して、shared_module() に渡される関数のリストを定義する def ファイルを使用できるようにしました。
  • フォールバック サブプロジェクトのデフォルト オプションを設定するために、find_program() 関数に「default_options」パラメータを追加しました。
  • fs.relative_to() メソッドが追加されました。このメソッドは、最初のパスが存在する場合、XNUMX 番目の引数を基準とした最初の引数の相対パスを返します。 たとえば、「fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')」となります。
  • follow_symlinks パラメータが install_data()、install_headers()、および install_subdir() 関数に追加されました。設定すると、シンボリック リンクがたどられます。
  • int.to_string() メソッドに「fill」パラメータが追加され、先頭のゼロで文字列を段階的に埋め込みます。 たとえば、n=3 に対して message(n.to_string(fill: 4)) を呼び出すと、文字列「004」が生成されます。
  • 新しいターゲット、clang-tidy-fix が追加されました。これは、「-fix」フラグを使用して Clang-Tidy ユーティリティを実行することを指定します。
  • アセンブリ ターゲット ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) のサフィックス (TARGET_SUFFIX) を指定する機能がコンパイル コマンドに追加されました。
  • パッケージ キャッシュ (サブプロジェクト/パッケージ キャッシュ) へのパスをオーバーライドする環境変数 MESON_PACKAGE_CACHE_DIR を追加しました。これにより、たとえば、複数のプロジェクトで共有キャッシュを使用できるようになります。
  • 永続的なキャッシュをクリアするための「meson setup --clearcache」コマンドを追加しました。
  • 「required」キーワードのサポートがすべての「has_*」コンパイラ チェック メソッドに追加されました。たとえば、「assert(cc.has_function('some_function'))」の代わりに「cc.has_function('some_function'」を指定できるようになりました。 、必須: true)」。
  • 新しいキーワード、rust_abi が、shared_library()、static_library()、library()、およびshared_module()関数に追加されました。これらは、非推奨のrust_crate_typeの代わりに使用する必要があります。

出所: オープンネット.ru

コメントを追加します