Waf: Как вывести сгенерированный файл? - PullRequest
2 голосов
/ 08 декабря 2011

У меня есть файл, который я хочу отправить в каталог сборки после того, как он был пропущен через скрипт Python. Как бы я сделал это в ваф?

Например, если бы у меня был такой файл:

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

И хотел бы заменить %% VERSION %% и %% DATADIR %% перед выводом этого в каталог сборки waf, как мне это сделать?

Я знаю, что это что-то вроде:

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

Но я не знаю, каким будет правило.

Кроме того, как только этот файл сгенерирован, возможно ли использовать его в других задачах?

1 Ответ

3 голосов
/ 08 декабря 2011

Если вы просто хотите заменить входной файл, ваш 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.

...