The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.9 KiB
68 lines
1.9 KiB
--- |
|
short-description: Style recommendations for Meson files |
|
... |
|
|
|
# Style recommendations |
|
|
|
This page lists some recommendations on organizing and formatting your |
|
Meson build files. |
|
|
|
## Tabs or spaces? |
|
|
|
Always spaces. |
|
|
|
## Naming options |
|
|
|
There are two ways of naming project options. As an example for |
|
booleans the first one is `foo` and the second one is |
|
`enable-foo`. The former style is recommended, because in Meson |
|
options have strong type, rather than being just strings. |
|
|
|
You should try to name options the same as is common in other |
|
projects. This is especially important for yielding options, because |
|
they require that both the parent and subproject options have the same |
|
name. |
|
|
|
# Global arguments |
|
|
|
Prefer `add_project_arguments` to `add_global_arguments` because using |
|
the latter prevents using the project as a subproject. |
|
|
|
# Cross compilation arguments |
|
|
|
Try to keep cross compilation arguments away from your build files as |
|
much as possible. Keep them in the cross file instead. This adds |
|
portability, since all changes needed to compile to a different |
|
platform are isolated in one place. |
|
|
|
# Sorting source paths |
|
|
|
The source file arrays should all be sorted. This makes it easier to spot |
|
errors and often reduces merge conflicts. Furthermore, the paths should be |
|
sorted with a natural sorting algorithm, so that numbers are sorted in an |
|
intuitive way (`1, 2, 3, 10, 20` instead of `1, 10, 2, 20, 3`). |
|
|
|
Numbers should also be sorted before characters (`a111` before `ab0`). |
|
Furthermore, strings should be sorted case insensitive. |
|
|
|
Additionally, if a path contains a directory it should be sorted before |
|
normal files. This rule also applies recursively for subdirectories. |
|
|
|
The following example shows correct source list definition: |
|
|
|
```meson |
|
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' |
|
]) |
|
```
|
|
|