编译器选择和自定义构建#

选择特定编译器#

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 核心的数量。这在绝大多数情况下都可以,并且可以实现接近最佳的构建时间。在某些情况下,在内存相对于 CPU 核心数量较少的机器上,这会导致作业内存不足。如果发生这种情况,请降低作业数 N,以便每个作业至少有 2 GB 的 RAM。例如,要启动 6 个作业:

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

spin build -j6