默认构建选项¶
Meson 提供了许多内置选项来控制项目的构建和安装方式。在绝大多数情况下,这些选项都有很好的默认值。但是,有一些选项meson-python
会用自己的默认值覆盖,以调整构建过程以适应构建 Python 轮子的任务。
由meson-python
指定的默认选项被pyproject.toml
中指定的包特定选项以及用户在构建时通过 Python 构建前端提供的选项覆盖。有关详细信息,请参阅将参数传递给 Meson指南。
用于构建项目的选项在meson setup
构建阶段输出的“用户定义选项”部分中进行了汇总,例如,在运行python -m build -w
时。这将类似于
User defined options
Native files: $builddir/meson-python-native-file.ini
buildtype : release
b_ndebug : if-release
b_vscrt : md
其中构建目录的路径已替换为$builddir
以提高清晰度。
meson-python
默认指定的选项是
- native-file=$builddir/meson-python-native-file.ini¶
meson-python
使用本地文件将 Meson 指向构建必须针对的python
解释器。这是用于运行 Python 构建前端的 Python 解释器。否则,Meson 将在$PATH
上查找第一个 Python 解释器,这可能与之不同。如果需要对本机环境进行进一步调整,可以将其他
--native-file
选项传递给meson setup
。Meson 将合并所有机器文件的内容。为了确保一切按预期工作,meson-python
本地文件在命令行中排在最后,覆盖了用户提供的本地文件中可能指定的python
二进制文件路径。
- buildtype=release¶
Meson 的默认行为是生成一个调试构建,其中二进制文件使用调试符号编译,并且在使用 MSVC 编译时,链接到 Visual Studio 调试运行时,见下文。
meson-python
的主要目的是构建发布工件,因此选择了更合适的构建类型。发布构建在没有调试符号的情况下编译,并且使用编译器优化。有关更多详细信息,请参阅Meson 文档。
- b_ndebug=if-release¶
出于与向后兼容性相关的理由,Meson 不会为发布构建禁用断言。对于大多数用户来说,这是一个令人惊讶且不希望有的行为。此选项指示 Meson 将
-DNDEBUG
选项传递给编译器,除非构建类型设置为除发布之外的其他类型。
- b_vscrt=md¶
使用默认选项,在编译调试构建时,Meson 指示 MSVC 编译器使用 Visual Studio 运行时库的调试版本。这会导致 MSVC 链接器查找所有链接的 DLL 的调试版本。用于 Windows 的 Python 发行版不包含 Python DLL 的调试版本,并且链接失败。这些链接错误令人惊讶且难以诊断。为了避免在用户明确要求调试构建时出现此问题,
meson-python
将此选项设置为指示 Meson 使用 Visual Studio 运行时的发布版本进行编译。有关更多详细信息,请参阅Meson 文档和Visual Studio 文档。此选项在使用其他编译器时会被忽略。