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

选择特定的编译器#

Meson 支持标准环境变量 CC , CXXFC 来选择特定的 C,C++ 和/或 Fortran 编译器. 这些环境变量在 the reference tables in the Meson docs 中有说明.

请注意,环境变量仅从干净的构建中应用,因为它们会影响配置阶段(即 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’s builtin options docs page .

Meson 还支持标准环境变量 CFLAGS , CXXFLAGS , FFLAGSLDFLAGS 来注入额外的标志 - 与前一节中关于这些环境变量仅在全新构建而非增量构建中生效的注意事项相同.

使用 Meson 的不同构建类型#

Meson 在配置项目时提供不同的构建类型.您可以在 the “core options” section of the Meson documentation 中查看构建类型的可用选项.

假设您是从头开始构建(如果需要,执行 git clean -xdf ),您可以配置构建以使用 debug 构建类型,如下所示:

spin build -- -Dbuildtype=debug

现在,您可以像往常一样使用 spin 界面进一步构建,安装和测试 NumPy:

spin test -s linalg

这将有效,因为在初始配置后,Meson 将记住配置选项.

控制构建并行度#

默认情况下, ninja 将启动 2n_cpu + 2 ,其中 n_cpu 是物理 CPU 核心的数量,并行构建作业.这在绝大多数情况下都很好,并且可以获得接近最佳的构建时间.在某些情况下,在 RAM 相对于 CPU 核心数量较少的机器上,这会导致作业内存不足.如果发生这种情况,请降低作业数 N ,以便每个作业至少有 2 GB 的 RAM.例如,启动 6 个作业:

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

或:

spin build -j6