编译器选择和自定义构建#
选择特定编译器#
Meson 支持标准环境变量 CC
、CXX
和 FC
来选择特定的 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 还支持标准环境变量 CFLAGS
、CXXFLAGS
、FFLAGS
和 LDFLAGS
来注入额外标志——但有一个限制,与上一节所述相同,即这些环境变量仅在全新构建时才会被拾取,而不是增量构建。
使用 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