預設建置選項¶
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 文件。當使用其他編譯器時,此選項會被忽略。