如何从Meson脚本运行Shell命令?

时间:2018-10-02 12:57:45

标签: shell command file-copying meson-build

如何从Meson构建脚本中运行shell命令(例如cp,即复制)?

我尝试了以下代码:

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的Shell命令的唯一方法吗?我在做什么错了?


参考:https://mesonbuild.com/External-commands.html

1 个答案:

答案 0 :(得分:3)

该命令是从unspecified目录运行的,因此,请尝试指定完整的文件名,例如:

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)