blob: ebe65364f608376637d6af12e5eefc42cf5a5a93 [file]
name: include_directories
returns: inc
description: |
Returns an opaque object which contains the directories (relative to the
current directory) given in the positional arguments. The result can then be
passed to the `include_directories:` and `d_import_dirs:` keyword arguments
when building executables or libraries. You can use the returned object in any
subdirectory you want, Meson will make the paths work automatically.
Note that this function call itself does not add the directories into
the search path, since there is no global search path. For something
like that, see [`add_project_arguments()`](#add_project_arguments).
See also `implicit_include_directories` parameter of
[[executable]], which adds current source and build
directories to include path.
Each directory given is converted to two include paths: one that is
relative to the source root and one relative to the build root.
warnings:
- |
When `is_system : true` is used, the include directory order on the
command line is **reversed** compared to the order given in the
arguments: the *last* directory listed has the highest priority
(it appears first among the `-isystem` flags and is searched first
by the compiler). This is the opposite of the default (`is_system :
false`), where the *first* directory listed has the highest priority.
This may be changed in future releases, but behavior will not change
as long as `meson_version` is not changed in `project()`.
example: |
For example, with the following source tree layout in
`/home/user/project.git`:
`meson.build`:
```meson
project(...)
subdir('include')
subdir('src')
...
```
`include/meson.build`:
```meson
inc = include_directories('.')
...
```
`src/meson.build`:
```meson
sources = [...]
executable('some-tool', sources,
include_directories : inc,
...)
...
```
If the build tree is `/tmp/build-tree`, the following include paths
will be added to the `executable()` call: `-I/tmp/build-tree/include
-I/home/user/project.git/include`.
varargs:
name: includes
type: str
description: Include paths to add.
kwargs:
is_system:
type: bool
default: false
description: |
If set to `true`, flags the specified directories as system directories.
This means that
they will be used with the `-isystem` compiler argument rather than
`-I` on compilers that support this flag (in practice everything
except Visual Studio).