docs: Add warning about not using join_paths() with build targets [skip ci]

This comes up now and again when people try do do something like:

meson.build:
```meson
my_sources = ['foo.c']
subdir('subdir')
executable('foo', my_sources)
```
subdir/meson.build:
```meson
my_sources += ['bar.c']
```
pull/4659/head
Dylan Baker 6 years ago committed by Jussi Pakkanen
parent 4ffd009fe9
commit 05fc81ac35
  1. 3
      docs/markdown/Reference-manual.md
  2. 8
      docs/markdown/Syntax.md

@ -1022,6 +1022,9 @@ Joins the given strings into a file system path segment. For example
individual segments is an absolute path, all segments before it are individual segments is an absolute path, all segments before it are
dropped. That means that `join_paths('foo', '/bar')` returns `/bar`. dropped. That means that `join_paths('foo', '/bar')` returns `/bar`.
**Warning** Don't use `join_paths()` for sources in [`library`](#library) and
[`executable`](#executable), you should use [`files`](#files) instead.
*Added 0.36.0* *Added 0.36.0*
Since 0.49.0 using the`/` operator on strings is equivalent to calling Since 0.49.0 using the`/` operator on strings is equivalent to calling

@ -216,6 +216,14 @@ path = pathsep.join(['/usr/bin', '/bin', '/usr/local/bin'])
path = join_paths(['/usr', 'local', 'bin']) path = join_paths(['/usr', 'local', 'bin'])
# path now has the value '/usr/local/bin' # path now has the value '/usr/local/bin'
# Don't use join_paths for sources files, use files for that:
my_sources = files('foo.c')
...
my_sources += files('bar.c')
# This has the advantage of always calculating the correct relative path, even
# if you add files in another directory or use them in a different directory
# than they're defined in
# Example to set an API version for use in library(), install_header(), etc # Example to set an API version for use in library(), install_header(), etc
project('project', 'c', version: '0.2.3') project('project', 'c', version: '0.2.3')
version_array = meson.project_version().split('.') version_array = meson.project_version().split('.')

Loading…
Cancel
Save