Как запустить команду оболочки из скрипта Meson? - PullRequest
0 голосов
/ 02 октября 2018

Как мне запустить команду оболочки (например, cp, т.е. скопировать) из скрипта сборки Meson?

Я пытался с этим кодом:

r = run_command('cp', 'test.txt', 'test2.txt')

if r.returncode() != 0
  warning('Command failed')
endif

Но это ничего не делает.
run_command выполняется успешно (возвращается 0), но файл не копируется.
Если я заменил cp на cp3, я получаю сообщение об ошибке из Meson, процесс завершается, и он недаже перейти к следующей строке.
Если я заменим test.txt на test0.txt, я получу сообщение об ошибке из сценария.

Таким образом, сценарий ведет себя правильно, но команда не оставляет никаких следов себяв файловой системе.

Является ли run_command единственным способом запуска команды оболочки из Meson?Что я делаю не так?


Ссылка: https://mesonbuild.com/External-commands.html

1 Ответ

0 голосов
/ 04 октября 2018

Команда запускается из неопределенного каталога , поэтому попробуйте указать полные имена файлов, например:

source = join_paths(meson.source_root(), 'test.txt')
dest = join_paths(meson.build_root(), 'test2.txt')
message('copying @0@ to @1@ ...'.format(source, dest))
r = run_command('cp', source, dest)
...