我正在使用waf作为构建系统的项目中使用Google Tests。我想知道处理资源文件的有效方法。
对于如下目录结构:
var searchterm ="'print';
var searchFor ="title contains " + searchterm;
var owneris =" and 'youremail@yourdomain.com' in owners";
构建之后,要从构建目录运行测试,我需要复制资源文件。构建目录如下所示:
MyProject
├── build
├── src
| ├──do_something.cpp
| ├──do_something.h
├── test
| ├── unit_test.cpp
│ ├── resources
│ │ ├── input1.txt
│ │ ├── input2.txt
├── wscript
为实现这一目标,我目前的wscript是:
MyProject
├── build
| ├── test
│ │ ├── resources
│ │ | ├── input1.txt
│ │ | ├── input2.txt
│ │ ├── unit_test
使用这样的def options(opt):
opt.load('compiler_cxx')
def configure(conf):
conf.load('compiler_cxx')
def build(bld):
bld.stlib(source='src/do_something.cpp',
target='mylib',
includes='src')
bld.exec_command("cp -r test/resources build/test")
bld.program(source='test/unit_test.cpp',
includes='src',
target='test/unit_test',
use='mylib')
看起来很骇人听闻。什么是更好的方法?其他人如何用waf组织他们的测试资源?
我正在使用waf 1.9.5。
答案 0 :(得分:0)
最简单的方法当然是更改您的程序,以便它可以从任意位置读取资源。为什么要使用相同文件的多个副本丢弃文件系统?
也就是说,您可以使用以下方法轻松复制目录树:
for f in ctx.path.ant_glob('tests/resources/**/*'):
ctx(features = 'subst', source = f.srcpath(),
target = f.srcpath())