使用构建配置设置

构建配置设置可用于自定义构建的某些方面。请参见构建配置设置 参考以了解meson-python实施的设置列表。

构建配置设置的指定方式取决于使用的 Python 包构建前端。最流行的构建前端是buildpip。它们使用--config-settings长命令行选项或-C短命令行选项

$ python -m build \
    -Csetup-args="-Doption=true" \
    -Csetup-args="-Dvalue=1" \
    -Ccompile-args="-j6"
$ python -m pip wheel . \
    --config-settings=setup-args="-Doption=disable" \
    --config-settings=compile-args="-j6"

有关详细信息,请参阅buildpip文档。本示例使用python -m pip wheel命令构建一个 Python 轮子,该轮子稍后可以安装或分发。要构建一个包并立即安装它,请将wheel替换为install。请参见将参数传递给 Meson指南以获取更多示例。

传递多个设置

请注意,pip在 23.1 之前没有提供将构建配置设置设置为字符串列表的方法:传递给--config-settings的相同键的后续值会覆盖之前的值,实际上限制了可以传递给构建过程中调用的每个命令的选项数量为一个。此限制已在pip 23.1 版本中解除。

使用持久构建目录

默认情况下,meson-python使用一个临时构建目录,该目录在构建终止时会被删除。持久构建目录允许更快地进行增量构建,并访问构建日志和中间构建工件。该build-dir配置设置指示meson-python使用用户指定的构建目录,该目录不会被删除。例如

$ python -m build -Cbuild-dir=build
$ python -m pip install . -Cbuild-dir=build

运行此命令后,build目录将包含mesonninjameson-python创建的所有构建工件和支持文件。相同的构建目录可以被后续的meson-python调用使用,避免在开发期间测试更改时需要重建整个项目。

使用永久构建目录也有助于调试失败的构建,因为它允许访问构建日志和中间构建输出,包括 Meson 自省文件和详细日志。后者存储在构建目录中的meson-logs/meson-log.txt文件中,可以用来诊断构建在项目配置阶段失败的原因。例如,要了解为什么依赖项检测失败,通常需要查看pkg-config或其他依赖项检测方法的输出。

访问详细日志和中间构建输出在 CI 设置中特别有用,因为在 CI 设置中,自省构建环境通常比在本地系统上更困难。因此,在 CI 构建步骤失败时显示更详细的日志文件可能很有用。例如,以下 GitHub Actions 工作流程文件片段显示了构建失败时的详细 Meson 设置日志

- name: Build the package
  run: python -m build --wheel -Cbuild-dir=build
- name: Show meson-log.txt
  if: failure()
  run: cat build/meson-logs/meson-log.txt

在上面的代码中将failure()替换为always()将导致始终显示 Meson 日志文件。请参见 GitHub Actions 文档以获取更多详细信息。请注意,对于复杂的项目,设置日志可能会变得非常长,并且当运行的作业发出许多输出行时,GitHub Actions Web 界面会变得无响应。