编译器选择和自定义构建#
选择特定的编译器#
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核心的数量.这在绝大多数情况下都是合适的,并且能接近最优的构建时间.在某些情况下,对于内存相对于CPU核心数量较少的机器,这会导致任务内存不足.如果发生这种情况,请降低任务数量 N
,使得每个任务至少有2 GB RAM.例如,启动6个任务:
python -m pip install . -Ccompile-args="-j6"
或:
spin build -j6