Mesonへの引数の受け渡し

meson-python は、Python wheel に含めるファイルをビルドするために meson setup, ninja, および meson install コマンドを、Python sdist に含めるファイルを収集するために meson dist コマンドを呼び出します。これらのコマンドの動作を変更するために、引数を渡すことができます。詳細は、Mesonドキュメントninjaドキュメントを参照してください。

meson および ninja のコマンドライン引数は、pyproject.toml 内のツール固有の設定で、tool.meson-python.args テーブルの setup, compile, install, および dist キーに対する文字列のリストとして指定できます。例:

[tool.meson-python.args]
setup = ['-Doption=false', '-Dfeature=enabled', '-Dvalue=42']
compile = ['-j4']
install = ['--tags=bindings']
dist = ['--include-subprojects']

または、Pythonビルドフロントエンドによって渡される構成設定で、setup-args, compile-args, install-args, および dist-args 構成設定 として指定できます。Pythonビルドフロントエンドを介して指定された構成設定は、pyproject.toml で指定されたものよりも優先され、上書きするために使用できます。

meson-python は、一部のデフォルトのMesonオプションを、Python wheel のビルドにより適切な 設定 で上書きします。 pyproject.toml を介して、または Python ビルドフロントエンド構成設定を介して指定されたユーザーオプションは、meson-python のデフォルトを上書きします。

Windowsでビルドする場合、meson-pythonmeson compile ラッパーを介して ninja コマンドを呼び出します。$PATH で GCC コンパイラーまたは LLVM コンパイラーが見つからない場合、これにより Visual Studio 環境がアクティブになり、ninja で MSVC コンパイラーを使用できるようになります。 Visual Studio 環境を無条件にアクティブにするには、meson setup--vsenv オプションを渡します。このを参照してください。 meson compile ラッパーを使用する場合、コンパイルコマンドのユーザー提供オプションは、--ninja-args オプションを介して渡されます。これにより、動作がビルドの開始方法に依存しないことが保証されます。詳細については、Mesonドキュメントを参照してください。

デフォルトライブラリを静的に設定する

バイナリwheelをビルドするときに、デフォルトのライブラリタイプを静的に設定します。

このオプションをプロジェクトの pyproject.toml に永続的に設定するには

[tool.meson-python.args]
setup = ['--default-library=static']

このオプションをビルド時に一時的に設定するには

$ python -m build -Csetup-args="--default-library=static" .
$ python -m pip wheel --config-settings=setup-args="--default-library=static" .

wheelに含めるビルドターゲットを選択する

meson install--tags コマンドラインオプションを介して、Meson インストールタグを使用して、インストール可能なファイルの一部のみをPython wheelに含めることができます。--tags が指定されている場合、指定されたタグのいずれかを持つファイルのみがインストールされます。

Mesonは、一部のファイルに事前定義されたタグを設定します。カスタムインストールタグは、ターゲット定義関数に渡される install_tag キーワード引数を使用して設定できます。この例では、runtime または python-runtime でタグ付けされたターゲットのみがPython wheelに含まれています。

このオプションをプロジェクトの pyproject.toml に永続的に設定するには

[tool.meson-python.args]
install = ['--tags=runtime,python-runtime']

このオプションをビルド時に一時的に設定するには

$ python -m build -Cinstall-args="--tags=runtime,python-runtime" .
$ python -m pip wheel --config-settings=install-args="--tags=runtime,python-runtime" .

ビルド最適化レベルを設定する

バイナリwheelをビルドする場合のデフォルトのコンパイル最適化レベルは、現在 2 に設定されています。これは、meson setup コマンドに -Doptimization 引数を渡すことで上書きできます。

このオプションをプロジェクトの pyproject.toml に永続的に設定するには

[tool.meson-python.args]
setup = ['-Doptimization=3']

このオプションをビルド時に一時的に設定するには

$ python -m build -Csetup-args="-Doptimization=3" .
$ python -m pip wheel --config-settings=setup-args="-Doptimization=3" .

WindowsでMSVCコンパイラーの使用を強制する

MSVCコンパイラーは $PATH にインストールされていません。 ninja がこれらのコンパイラーを使用できるようにするには、Visual Studio 環境をアクティブ化する必要があります。これは meson compile によって処理されますが、GCC コンパイラーまたは LLVM コンパイラーが $PATH で見つからない場合に限ります。 meson setup--vsenv オプションを渡すと、Visual Studio 環境のアクティブ化が強制され、アクティブ化に失敗するとエラーが生成されます。

このオプションは他のプラットフォームでは効果がないため、プロジェクトをMSVCでコンパイルする必要がある場合は、プロジェクトの pyproject.toml にこのオプションを永続的に設定することを検討できます。

[tool.meson-python.args]
setup = ['--vsenv']

このオプションをビルド時に一時的に設定するには

$ python -m build -Csetup-args="--vsenv" .
$ python -m pip wheel --config-settings=setup-args="--vsenv" .