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.
58 lines
2.4 KiB
58 lines
2.4 KiB
--- |
|
short-description: Simple project step by step explanation |
|
... |
|
|
|
# Meson sample |
|
|
|
A Meson file that builds an executable looks like this. |
|
|
|
```meson |
|
project('simple', 'c') |
|
executable('myexe', 'source.c') |
|
``` |
|
|
|
All Meson build definitions begin with the `project` command. It specifies the name of the project and what programming languages it uses. Here the project is called *simple* and it uses only the C programming language. All strings are single-quoted. |
|
|
|
On the next line we define a *build target*, in this case an executable called *myexe*. It consists of one source file. This is all the code that a user needs to write to compile an executable with Meson. |
|
|
|
Variables are fully supported. The above code snippet could also have been declared like this. |
|
|
|
```meson |
|
project('simple', 'c') |
|
src = 'source.c' |
|
executable('myexe', src) |
|
``` |
|
|
|
Most executables consist of more than one source file. The easiest way to deal with this is to put them in an array. |
|
|
|
```meson |
|
project('simple', 'c') |
|
src = ['source1.c', 'source2.c', 'source3.c'] |
|
executable('myexe', src) |
|
``` |
|
|
|
Meson also supports the notion of *keyword arguments*. Indeed most arguments to functions can only be passed using them. The above snippet could be rewritten like this. |
|
|
|
```meson |
|
project('simple', 'c') |
|
src = ['source1.c', 'source2.c', 'source3.c'] |
|
executable('myexe', sources : src) |
|
``` |
|
|
|
These two formats are equivalent and choosing one over the other is mostly a question of personal preference. |
|
|
|
The `executable` command actually returns an *executable object*, which represents the given build target. It can be passed on to other functions, like this. |
|
|
|
```meson |
|
project('simple', 'c') |
|
src = ['source1.c', 'source2.c', 'source3.c'] |
|
exe = executable('myexe', src) |
|
test('simple test', exe) |
|
``` |
|
|
|
Here we create a unit test called *simple test*, and which uses the built executable. When the tests are run with the `ninja test` command, the built executable is run. If it returns zero, the test passes. A non-zero return value indicates an error, which Meson will then report to the user. |
|
|
|
A note to Visual Studio users |
|
----- |
|
|
|
There's a slight terminology difference between Meson and Visual Studio. A Meson *project* is the equivalent to a Visual Studio *solution*. That is, the topmost thing that encompasses all things to be built. A Visual Studio *project* on the other hand is the equivalent of a Meson top level build target, such as an executable or a shared library.
|
|
|