样式建议

本页面列出了一些关于组织和格式化 Meson 构建文件的建议。

制表符还是空格?

始终使用空格。两个空格是最常见的。

尾随逗号?

是,如果可能的话。它们有助于在版本控制系统中生成更美观的差异。

命名变量

蛇形命名法(风格化为 snake_case)指的是一种编写风格,其中每个空格都用下划线 (_) 字符替换,并且每个单词的首字母都小写。这是 Meson 构建脚本中用作变量标识符的最常见命名约定。

假设您想引用您的可执行文件,例如 my_exe

依赖项用法

dependency 函数是处理依赖项的推荐方法。如果您的 wrap 文件包含必要的 [provide] 条目,那么无论是在编译您自己的代码时还是在使用系统依赖项时,一切都会自动正常工作。

只有在您需要提取非依赖项/程序时,才需要使用 subproject

命名选项

有两种命名项目选项的方法。以布尔值为例,第一种是 foo,第二种是 enable-foo。建议使用前一种风格,因为在 Meson 中,选项具有强类型,而不仅仅是字符串。

您应该尝试将选项命名为其他项目中常用的名称。这对于生成选项尤其重要,因为它们要求父级和子级项目的选项具有相同的名称。

全局参数

优先使用 add_project_arguments 而不是 add_global_arguments,因为使用后者会阻止将项目用作子项目。

交叉编译参数

尽可能避免在构建文件中使用交叉编译参数。将它们保存在交叉文件而不是构建文件中。这增加了可移植性,因为编译到不同平台所需的所有更改都集中在一个位置。

排序源路径

所有源文件数组都应该排序。这使得更容易发现错误,并且通常可以减少合并冲突。此外,路径应该使用自然排序算法排序,以便数字以直观的方式排序 (1, 2, 3, 10, 20 而不是 1, 10, 2, 20, 3)。

数字也应该在字符之前排序 (a111ab0 之前)。此外,字符串应该不区分大小写地排序。

此外,如果路径包含目录,则它应该在普通文件之前排序。此规则也递归地适用于子目录。

以下示例显示了正确的源列表定义

sources = files(
  'aaa/a1.c',
  'aaa/a2.c',
  'bbb/subdir1/b1.c',
  'bbb/subdir2/b2.c',
  'bbb/subdir10/b3.c',
  'bbb/subdir20/b4.c',
  'bbb/b5.c',
  'bbb/b6.c',
  'f1.c',
  'f2.c',
  'f10.c',
  'f20.c',
)

搜索结果为