介子:将脚本复制到构建目录
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
- 无需路径操作。
我测试了 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
- 无需路径操作。