gpt4 book ai didi

c++ - 使用waf时如何组织测试资源文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:44:34 24 4
gpt4 key购买 nike

我在一个以 waf 作为构建系统的项目中使用 Google 测试。我想知道一种处理资源文件的有效方法。

目录结构如下:

MyProject
├── build
├── src
| ├──do_something.cpp
| ├──do_something.h
├── test
| ├── unit_test.cpp
│ ├── resources
│ │ ├── input1.txt
│ │ ├── input2.txt
├── wscript

构建后,要从构建目录运行测试,我需要复制资源文件。构建目录如下所示:

MyProject
├── build
| ├── test
│ │ ├── resources
│ │ | ├── input1.txt
│ │ | ├── input2.txt
│ │ ├── unit_test

为此,我当前的 wscript 是:

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')

像这样使用 bld.exec_command 似乎很老套。什么是更好的方法?其他人如何使用 waf 组织他们的测试资源?

我正在使用 waf 1.9.5。

最佳答案

当然,最简单的方法是更改​​您的程序,使其可以从任意位置读取资源。为什么在文件系统中散布相同文件的多个拷贝?

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

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

关于c++ - 使用waf时如何组织测试资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41647124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com