Используйте функцию "subst" на этапе настройки - PullRequest
1 голос
/ 06 мая 2020

waf имеет функцию subst для копирования файлов. В контексте сборки это можно использовать так:

def build(bld):
    bld(features='subst', source='wscript', target='wscript_copy', is_copy=True)

Но мне нужно использовать функцию subst на шаге configure:

def configure(conf):
    conf(features='subst', source='wscript', target='wscript_copy', is_copy=True)

Но это невозможно, так как configure не имеет BuildContext:

TypeError: 'ConfigurationContext' object is not callable

Есть ли способ заставить это работать?

1 Ответ

1 голос
/ 07 мая 2020

ConfigureContext не предназначен для использования задач.

Если вам это действительно нужно, вы можете сделать то же самое, что и метод conf.check() (см. Книгу по waf §10.4.2). Он использует waflib.Configure.run_build(self, *k, **kw), что не совсем соответствует c. См. waflib.Tools.c_config для его использования check().

Мне это кажется ненужной сложностью. Если вам нужно только скопировать файлы для настройки рабочего пространства, используйте простой python.

from shutil import copyfile

def configure(conf):
    copyfile('wscript', 'wscript_copy')

Часть сборки использует управление задачами и зависимости задач для сборки, если это необходимо.

Если вы требуется замена переменных env, вы можете закодировать это в инструменте waf, например:

def configure(conf):
    conf.load("mysubst")
    conf.substitute(wscript', 'wscript_copy')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...