我有一个文件,我想通过python脚本推送到构建目录。我怎么会这样做?
例如,如果我有这样的文件:
VERSION=%%VERSION%%
DATADIR=%%DATADIR%%
想要在输出到waf构建目录之前替换%% VERSION %%和%% DATADIR %%,我该怎么做?
我知道这有点像:
ctx(rule='???'
source='versionfile.ver',
target='versionfile.out'
)
但我不知道规则是什么。
此外,一旦生成该文件,是否可以在其他任务中使用它?
答案 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脚本。