编译器选择和自定义构建#
选择特定编译器#
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 内存。例如,要启动 6 个作业:
python -m pip install . -Ccompile-args="-j6"
或
spin build -j6