介子:将脚本复制到构建目录

meson: copy script to build directory

我测试了 C 和 shell 源文件。 Meson unit tests 预计来自构建目录 运行。从我的 C 源编译的二进制文件我自动复制到构建目录(指定为 executable()),如何复制到那里 shell 脚本?

或者我应该运行/从源目录获取它们,例如

test = join_paths(meson.source_root(), 'tests/run.sh')
run_command(test, "--foo", "bar")

或使用find_program()?

test = find_program('run.sh')
run_command(test, "--foo", "bar")

OK,find_program()在系统中搜索PATH,不适合。可能将文件复制到构建目录会更好:

src = join_paths(meson.source_root(), 'tests/run.sh')
dest = join_paths(meson.build_root(), 'tests')
message('copying @0@ to @1@ ...'.format(src, dest))
run_command('cp', src, dest)

更规范的做法是使用“虚拟”custom_target:

scipt_name = 'run.sh'
custom_target('copy script',
  input : script_name,
  output :  script_name,
  command : ['cp', '@INPUT@', '@OUTPUT@'],
  install : false,
  build_by_default : true)

这样更好,因为它会被执行,即更新时复制;如果您将此添加到 tests 文件夹中的 meson.build - 无需路径操作。