样式建议
本页面列出了一些关于组织和格式化 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
)。
数字也应该在字符之前排序 (a111
在 ab0
之前)。此外,字符串应该不区分大小写地排序。
此外,如果路径包含目录,则它应该在普通文件之前排序。此规则也递归地适用于子目录。
以下示例显示了正确的源列表定义
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',
)
搜索结果为