編譯器選擇與自訂建置#

選擇特定的編譯器#

Meson 支援標準環境變數 CCCXXFC,以選擇特定的 C、C++ 和/或 Fortran 編譯器。這些環境變數記錄在Meson 文件中的參考表格中。

請注意,環境變數僅在全新建置時套用,因為它們影響配置階段(即 meson setup)。增量重建不會對環境變數的變更做出反應 - 您必須執行 git clean -xdf 並完整重建,或執行 meson setup --reconfigure

新增自訂編譯器或連結器旗標#

Meson 依設計偏好透過傳遞給 meson setup 的命令列選項來配置建置。它提供了許多內建選項

  • 若要啟用偵錯建置和最佳化層級,請參閱下一節關於「建置類型」的內容。

  • 以可攜式方式啟用 -Werror 是透過 -Dwerror=true 完成的,

  • 啟用警告層級是透過 -Dwarning_level=<val> 完成的,其中 <val>{0, 1, 2, 3, everything} 之一,

  • 還有許多其他內建選項,從啟用 Visual Studio (-Dvsenv=true) 和使用連結時間最佳化 (-Db_lto) 建置,到變更預設 C++ 語言層級 (-Dcpp_std='c++17') 或連結器旗標 (-Dcpp_link_args='-Wl,-z,defs')。

如需選項的完整概述,請參閱 Meson 的內建選項文件頁面

Meson 也支援標準環境變數 CFLAGSCXXFLAGSFFLAGSLDFLAGS 以注入額外旗標 - 與前一節中關於這些環境變數僅在全新建置而非增量建置中被選取的注意事項相同。

使用 Meson 的不同建置類型#

Meson 在配置專案時提供不同的建置類型。您可以在 Meson 文件的「核心選項」章節中查看建置類型的可用選項。

假設您從頭開始建置(如果需要,請執行 git clean -xdf),您可以如下配置建置以使用 debug 建置類型

spin build -- -Dbuildtype=debug

現在,您可以像平常一樣使用 spin 介面來進一步建置、安裝和測試 NumPy

spin test -s linalg

這會有效,因為在初始配置之後,Meson 會記住配置選項。

控制建置平行度#

預設情況下,ninja 將啟動 2*n_cpu + 2 個平行建置作業,其中 n_cpu 是實體 CPU 核心的數量。這在絕大多數情況下都很好,並且可以實現接近最佳的建置時間。在某些情況下,在 RAM 相對 CPU 核心數量較小的機器上,這會導致作業記憶體不足。如果發生這種情況,請降低作業數量 N,以便每個作業至少有 2 GB 的 RAM。例如,若要啟動 6 個作業

python -m pip install . -Ccompile-args="-j6"

spin build -j6