如何在使用waf时组织测试资源文件

时间:2017-01-14 05:35:19

标签: c++ waf

我正在使用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。

1 个答案:

答案 0 :(得分:0)

最简单的方法当然是更改您的程序,以便它可以从任意位置读取资源。为什么要使用相同文件的多个副本丢弃文件系统?

也就是说,您可以使用以下方法轻松复制目录树:

for f in ctx.path.ant_glob('tests/resources/**/*'):
    ctx(features = 'subst', source = f.srcpath(),
        target = f.srcpath())