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

3

我有一个文件,我想在它经过Python脚本后发送到构建目录中。在waf中我该如何做呢?

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

VERSION=%%VERSION%%
DATADIR=%%DATADIR%%
如果要在将其输出到waf构建目录之前替换%%VERSION%%和%%DATADIR%%,该怎么做? 我知道大致是这样的:
ctx(rule='???'
 source='versionfile.ver', 
 target='versionfile.out'
)

但我不知道规则会是什么。

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

1个回答

4
如果您只想替换一个输入文件,您的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访问版本,您需要在配置期间定义它。
conf.env['VERSION'] = '0.7.0'
您可以在此链接中查找此WAF任务的详细信息。该任务的输出文件可用作其他任务的输入。 但是,如果您希望通过Python脚本或任何可用命令传递源文件,则可以使用以下内容:
lib_typelib = bld.new_task_gen(
  name = 'versionfile',
  source = 'versionfile.ver',
  target = 'versionfile.out',
  rule='/path/to/your/python/script ${SRC} -o ${TGT}')

此外,还提供了一个示例(点击这里)。在这个示例中,使用g-ir-compiler,而在您的情况下,需要使用一个Python脚本。


subst功能正是我之前一直在寻找的,而我之前从未见过。 - Jeff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,