預設建置選項

Meson 提供了許多內建選項來控制專案的建置和安裝方式。在絕大多數情況下,這些選項都有良好的預設值。然而,有一些選項meson-python會覆寫其預設值,以調整建置程序以符合建置 Python wheel 的任務。

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使用本機檔案將 Meson 指向建置必須針對的python直譯器。這是用於執行 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 文件。當使用其他編譯器時,此選項會被忽略。