デフォルトのビルドオプション¶
Mesonは、プロジェクトのビルドおよびインストール方法を制御するための多くの組み込みオプションを提供しています。 ほとんどの場合、これらは適切なデフォルト値を持っています。 しかし、meson-python
がPythonホイールのビルドプロセスに合うように独自のデフォルト値でオーバーライドするオプションがいくつかあります。
meson-python
によって指定されたデフォルトオプションは、pyproject.toml
で指定されたパッケージ固有のオプション、およびPythonビルドフロントエンドを介してビルド時にユーザーが提供するオプションによってオーバーライドされます。 詳細については、Mesonへの引数の渡し方ガイドを参照してください。
プロジェクトのビルドに使用されるオプションは、ビルドのmeson setup
ステージの出力の*ユーザー定義オプション*セクションにまとめられています。たとえば、python -m build -w
を実行する場合などです。 これは次のようになります。
User defined options
Native files: $builddir/meson-python-native-file.ini
buildtype : release
b_ndebug : if-release
b_vscrt : md
ここで、ビルドディレクトリへのパスは、わかりやすくするために$builddir
に置き換えられています。
meson-python
がデフォルトで指定するオプションは次のとおりです。
- native-file=$builddir/meson-python-native-file.ini¶
meson-python
は、ネイティブファイルを使用して、ビルドがターゲットとする必要があるpython
インタープリターをMesonに指示します。 これは、Pythonビルドフロントエンドを実行するために使用されるPythonインタープリターです。 そうしないと、Mesonは$PATH
上の最初のPythonインタープリターを探しますが、これは同じではない場合があります。ネイティブ環境をさらに調整する必要がある場合は、追加の
--native-file
オプションをmeson setup
に渡すことができます。 Mesonはすべてのマシンファイルの内容をマージします。 すべてが期待どおりに機能するように、meson-python
ネイティブファイルはコマンドラインの最後にあり、ユーザーが指定したネイティブファイルで指定されている可能性のあるpython
バイナリパスをオーバーライドします。
- buildtype=release¶
Mesonのデフォルトは、デバッグシンボル付きでコンパイルされたバイナリと、MSVCでコンパイルする場合はVisual Studioデバッグランタイムにリンクされたデバッグビルドを生成することです(以下を参照)。
meson-python
の主な目的はリリースアーティファクトをビルドすることであるため、より適切なビルドタイプが選択されます。 リリースビルドは、デバッグシンボルなしで、コンパイラの最適化を使用してコンパイルされます。 詳細については、Mesonのドキュメントを参照してください。
- b_ndebug=if-release¶
下位互換性に関連する理由から、Mesonはリリースビルドのアサーションを無効にしません。 ほとんどのユーザーにとって、これは驚くべき望ましくない動作です。 このオプションは、ビルドタイプがリリース以外に設定されていない限り、Mesonに
-DNDEBUG
オプションをコンパイラーに渡すように指示します。
- b_vscrt=md¶
デフォルトオプションでは、デバッグビルドをコンパイルするとき、MesonはMSVCコンパイラーにVisual Studioランタイムライブラリのデバッグバージョンを使用するように指示します。 これにより、MSVCリンカーは、リンクされているすべてのDLLのデバッグビルドを探します。 Windows用Pythonディストリビューションには、Python DLLのデバッグバージョンが含まれておらず、リンクに失敗します。 これらのリンクエラーは驚くべきことであり、診断が困難です。 ユーザーが明示的にデバッグビルドを要求したときにこの問題を回避するために、
meson-python
はこのオプションを設定して、MesonにVisual Studioランタイムのリリースバージョンでコンパイルするように指示します。 詳細については、MesonのドキュメントおよびVisual Studioのドキュメントを参照してください。 他のコンパイラが使用されている場合、このオプションは無視されます。