Waf:如何输出生成的文件?

时间:2011-12-07 20:47:44

标签: python build waf

我有一个文件,我想通过python脚本推送到构建目录。我怎么会这样做?

例如,如果我有这样的文件:

VERSION=%%VERSION%%
DATADIR=%%DATADIR%%

想要在输出到waf构建目录之前替换%% VERSION %%和%% DATADIR %%,我该怎么做?

我知道这有点像:

ctx(rule='???'
 source='versionfile.ver', 
 target='versionfile.out'
)

但我不知道规则是什么。

此外,一旦生成该文件,是否可以在其他任务中使用它?

1 个答案:

答案 0 :(得分:3)

如果您只想替换输入文件,则versionfile.ver应该如下所示

VERSION=@VERSION@
DATADIR=@DATADIR@

现在您可以使用以下任务,以便替换值

bld.new_task_gen (
  features = "subst",
  source= "versionfile.ver",
  target= "versionfile.out",
  VERSION = bld.env['VERSION'],
  DATADIR = bld.env['DATADIR'])

为了能够从bld访问版本,您必须在configure

期间定义它
conf.env['VERSION'] = '0.7.0'

您可以在行动中找到此waf任务here此任务的输出文件可用作其他任务的输入。

但是,当您想通过python脚本或任何可用命令传递源文件时,可以使用以下命令:

lib_typelib = bld.new_task_gen(
  name = 'versionfile',
  source = 'versionfile.ver',
  target = 'versionfile.out',
  rule='/path/to/your/python/script ${SRC} -o ${TGT}')

还有一个可用的示例here,在这种情况下使用g-ir-compiler,在你的情况下将是一个python脚本。