使用建置組態設定

建置組態設定可用於自訂建置的某些方面。請參閱建置組態設定參考文件,以取得 meson-python 實作的設定清單。

如何指定建置組態設定取決於所使用的 Python 套件建置前端。最受歡迎的建置前端是 buildpip。這些使用 --config-settings 長命令列選項或 -C 短命令列選項

$ python -m build \
    -Csetup-args="-Doption=true" \
    -Csetup-args="-Dvalue=1" \
    -Ccompile-args="-j6"
$ python -m pip wheel . \
    --config-settings=setup-args="-Doption=disable" \
    --config-settings=compile-args="-j6"

請參閱 buildpip 文件以了解詳細資訊。此範例使用 python -m pip wheel 命令來建置 Python 輪子,該輪子可以稍後安裝或發佈。若要建置套件並立即安裝它,請將 wheel 替換為 install。請參閱傳遞引數至 Meson指南以取得更多範例。

傳遞多個設定

請注意,23.1 之前的 pip 不提供將建置組態設定設定為字串清單的方法:傳遞給 --config-settings 的同一鍵的較後值會覆蓋較早的值,有效地將可在建置過程中呼叫的每個命令傳遞的選項數量限制為一個。此限制已在 pip 23.1 版本中解除。

使用永久建置目錄

預設情況下,meson-python 使用在建置終止時刪除的暫時建置目錄。永久建置目錄允許更快的增量建置,並存取建置日誌和中間建置成品。build-dir 組態設定指示 meson-python 使用使用者指定的建置目錄,該目錄將不會被刪除。例如

$ python -m build -Cbuild-dir=build
$ python -m pip install . -Cbuild-dir=build

執行此命令後,build 目錄將包含 mesonninjameson-python 建立的所有建置成品和支援檔案。後續呼叫 meson-python 可以使用相同的建置目錄,避免在開發期間測試變更時重建整個專案的需求。

使用永久建置目錄也有助於偵錯失敗的建置,方法是允許存取建置日誌和中間建置輸出,包括 Meson 自省檔案和詳細日誌。後者儲存在建置目錄中的 meson-logs/meson-log.txt 檔案中,可用於診斷為什麼建置在專案組態階段失敗。例如,若要了解為什麼相依性偵測失敗,通常需要查看 pkg-config 或其他相依性偵測方法的輸出。

存取詳細日誌和中間建置輸出在 CI 設定中特別有幫助,在 CI 設定中,自省建置環境通常比在本機系統上更困難。因此,在 CI 建置步驟失敗時顯示更詳細的日誌檔案可能很有用。例如,下列 GitHub Actions 工作流程檔案程式碼片段會在建置失敗時顯示詳細的 Meson 設定日誌

- name: Build the package
  run: python -m build --wheel -Cbuild-dir=build
- name: Show meson-log.txt
  if: failure()
  run: cat build/meson-logs/meson-log.txt

在上面的程式碼中將 failure() 替換為 always() 將導致一律顯示 Meson 日誌檔案。請參閱 GitHub Actions 文件以了解更多詳細資訊。請注意,對於複雜的專案,設定日誌可能會變得非常長,而執行中的作業發出許多輸出行的情況下,GitHub Actions Web 介面將會停止回應。