|
|
|
---
|
|
|
|
short-description: Adding compiler arguments
|
|
|
|
...
|
|
|
|
|
|
|
|
# Adding arguments
|
|
|
|
|
|
|
|
Often you need to specify extra compiler arguments. Meson provides two
|
|
|
|
different ways to achieve this: global arguments and per-target
|
|
|
|
arguments.
|
|
|
|
|
|
|
|
Global arguments
|
|
|
|
--
|
|
|
|
|
|
|
|
Global compiler arguments are set with the following command. As an
|
|
|
|
example you could do this.
|
|
|
|
|
|
|
|
```meson
|
|
|
|
add_global_arguments('-DFOO=bar', language : 'c')
|
|
|
|
```
|
|
|
|
|
|
|
|
This makes Meson add the define to all C compilations. Usually you
|
|
|
|
would use this setting for flags for global settings. Note that for
|
|
|
|
setting the C/C++ language standard (the `-std=c99` argument in GCC),
|
|
|
|
you would probably want to use a default option of the [[project]]
|
|
|
|
function. For details see the [reference manual](Reference-manual.md).
|
|
|
|
|
|
|
|
Global arguments have certain limitations. They all have to be defined
|
|
|
|
before any build targets are specified. This ensures that the global
|
|
|
|
flags are the same for every single source file built in the entire
|
|
|
|
project with one exception. Compilation tests that are run as part of
|
|
|
|
your project configuration do not use these flags. The reason for that
|
|
|
|
is that you may need to run a test compile with and without a given
|
|
|
|
flag to determine your build setup. For this reason tests do not use
|
|
|
|
these global arguments.
|
|
|
|
|
|
|
|
You should set only the most essential flags with this setting, you
|
|
|
|
should *not* set debug or optimization flags. Instead they should be
|
|
|
|
specified by selecting an appropriate build type.
|
|
|
|
|
|
|
|
Project arguments
|
|
|
|
--
|
|
|
|
|
|
|
|
Project arguments work similar to global arguments except that they
|
|
|
|
are valid only within the current subproject. The usage is simple:
|
|
|
|
|
|
|
|
```meson
|
|
|
|
add_project_arguments('-DMYPROJ=projname', language : 'c')
|
|
|
|
```
|
|
|
|
|
|
|
|
This would add the compiler flags to all C sources in the current
|
|
|
|
project.
|
|
|
|
|
|
|
|
Per target arguments
|
|
|
|
--
|
|
|
|
|
|
|
|
Per target arguments are just as simple to define.
|
|
|
|
|
|
|
|
```meson
|
|
|
|
executable('prog', 'prog.cc', cpp_args : '-DCPPTHING')
|
|
|
|
```
|
|
|
|
|
|
|
|
Here we create a C++ executable with an extra argument that is used
|
|
|
|
during compilation but not for linking.
|
|
|
|
|
|
|
|
You can find the parameter name for other languages in the [reference
|
|
|
|
tables](Reference-tables.md).
|
|
|
|
|
|
|
|
Specifying extra linker arguments is done in the same way:
|
|
|
|
|
|
|
|
```meson
|
|
|
|
executable('prog', 'prog.cc', link_args : '-Wl,--linker-option')
|
|
|
|
```
|