| --- |
| short-description: Running external commands |
| ... |
| |
| # External commands |
| |
| As a part of the software configuration, you may want to get extra |
| data by running external commands. The basic syntax is the following. |
| |
| ```meson |
| r = run_command('command', 'arg1', 'arg2', 'arg3') |
| if r.returncode() != 0 |
| # it failed |
| endif |
| output = r.stdout().strip() |
| errortxt = r.stderr().strip() |
| ``` |
| |
| The `run_command` function returns an object that can be queried for |
| return value and text written to stdout and stderr. The `strip` method |
| call is used to strip trailing and leading whitespace from |
| strings. Usually output from command line programs ends in a newline, |
| which is unwanted in string variables. The first argument can be |
| either a string or an executable you have detected earlier with |
| `find_program`. |
| |
| Note that you can not pass your command line as a single string. That |
| is, calling `run_command('do_something foo bar')` will not work. You |
| must either split up the string into separate arguments or pass the |
| split command as an array. It should also be noted that Meson will not |
| pass the command to the shell, so any command lines that try to use |
| things such as environment variables, backticks or pipelines will not |
| work. If you require shell semantics, write your command into a script |
| file and call that with `run_command`. |