Meson关于在一个构建目录中混合多个构建系统的策略

Meson 的设计理念是,所有依赖项要么通过 Pkg-Config 等机制由“平台”提供,要么作为主项目下的 Meson 子项目进行构建。一些项目希望混合构建系统,即在与其他构建系统相同的构建目录中构建依赖项,方法是让一个构建系统调用另一个构建系统。构建目录不一定需要相互嵌套,但这是常见的情况。

本页列出了 Meson 项目关于混合构建系统的立场。简而言之,虽然我们为这种用例提供了一些功能,但它只适用于简单的情况。任何更复杂的情况都无法实现可靠性,并且试图这样做会给 Meson 开发者带来无限的维护负担。因此,这些用例不能保证能正常工作,即使一个使用它们的项目今天能正常工作,也不能保证它在任何未来的版本中都能正常工作。

“混合构建系统”的定义

在本页中,混合构建系统是指任何和所有机制,其中一个构建系统以任何方式使用来自另一个构建系统的构建目录中的构建工件。

请注意,此定义没有指定依赖项是什么以及如何构建它们,只指定了它们是如何被消费的。例如,假设你有一个使用构建系统 X 构建的独立依赖库。在这种情况下,让 Meson 在构建时调用构建系统来构建依赖项将被解释为混合构建系统。另一方面,使用“Flatpak 式”方法,即使用外部机制构建和安装库,并通过标准的与构建系统无关的方法(例如 Pkg-Config)来使用它,将不被视为混合构建系统。使用未安装的 pkgconfig 文件被视为混合,不过。

这对支持和兼容性意味着什么?

Meson 项目不会承担任何维护负担来确保除了上面讨论的简单构建设置之外的任何东西都能正常工作。我们也不会进行更改以支持这些用例,因为这会降低普通 Meson 用户的使用体验。这包括但不限于以下内容

  • 其他构建系统中的任何更改,导致混合项目损坏,将不被视为 Meson 中的错误。

  • 混合构建项目中的损坏将不被视为回归,这类问题永远不会被视为发布阻碍,无论根本原因是什么。

  • 任何需要对 Meson 进行重大更改才能解决另一个构建系统中缺少或损坏的功能的用例不受支持。这些问题必须在 upstream 修复。

搜索结果是