Я создал функцию waf для запуска size
во всех файлах сборки, но я не хочу делать это так, как хотел изначально (см. Custom waf задача не запускается и не находит исходники).
Итак, я написал сейчас функцию, которая в целом работает, но снова не находит источники правильно. Я использую @after('apply_link')
, поэтому бинарники должны присутствовать...
- Первый запуск: генерируются все двоичные файлы, но
size
не имеет входных файлов. - Второй запуск: все бинарники есть и функция
size
запускается корректно. Почему это так?
особенность ваф:
from waflib.TaskGen import extension
from waflib.TaskGen import after
class size(Task.Task):
color = 'BLUE'
run_str = '${SIZE} ${SRC} > ${TGT}'
@extension('.o', '.a', '.elf')
@after('apply_link')
def add_size(self, node):
name = 'size'
out = node.change_ext('.log')
task = self.create_task(name, node, out)
try:
self.size_tasks.append(task)
except AttributeError:
self.size_tasks = [task]
return task
Использование функции:
bld(source=bld.path.get_bld().ant_glob('**/*.o **/*.a **/*.elf'),
features='size')
Дополнительный вопрос: есть ли лучший вариант для регистрации вывода этой задачи как перенаправление вывода с помощью >
в выходной файл?