Interested Article - Waf


- 2021-10-07
- 1
Waf — система автоматизации сборки , написанная на Python , использующая сценарные файлы конфигурации на языке Python. Основной автор — Томас Надь ( Thomas Nagy ).
Обладает встроенной поддержкой Си , C++ , D , Java , Фортрана , Qt ; обеспечивает генерацию документов TeX и LaTeX . Поддержка других языков или форматов файлов может быть реализована с помощью пользовательских расширений ( tools ). Для Си и C++ автоматически анализируются зависимости, при этом в отличие от make не нужно отдельно выполнять команду make depend . Также имеется встроенная возможность поиска необходимых для сборки файлов (#include-файлы, библиотеки и прочие сборочные артефакты).
Поддерживается обнаружение изменений содержимого файлов по контрольным суммам MD5 , наряду с традиционным обнаружением изменений по времени записи файла. Имеется возможность параллельной сборки. Также для ускорения сборки используется кеширование — подобно ccache , но для любых типов файлов.
История
Долгое время проект KDE использовал для сборки пакет GNU build system (Autotools), но в силу ограничений последнего решил перейти на SCons . В рамках данного перехода Томас Надь создал служебную программу BKsys, которая должна была работать поверх SCons и предоставлять функциональность, аналогичную Autotools. Однако позже Надь решил, что архитектурные недостатки SCons (в частности проблема производительности на крупных проектах) слишком велики и трудно исправимы. Поэтому он решил полностью переписать SCons, и в результате появился «Waf».
Некоторое время проект KDE рассматривал BKsys (а позже Waf) в качестве своей основной системы сборки, однако выбор был сделан в пользу CMake , так как BKsys не решал проблем SCons, а Waf все ещё находился в состоянии альфа-версии . Тем не менее, система получила определённое распространение, в частности, используется проектами Samba , Ardour , Geany , Jack Audio .
Пример
Пример простого wscript-файла, который компилирует файл «hello-world.c», используя один из доступных компиляторов Си:
top = '.'
out = 'build'
def options(opt):
opt.load('compiler_c')
def configure(conf):
conf.load('compiler_c')
def build(bld):
bld.program(source = 'hello-world.c', target = 'hello-world', features = 'c cprogram')
Сборка проекта запускается следующей командой:
waf configure build
Примечания
- ↑ . Дата обращения: 22 декабря 2010. 7 мая 2011 года.
Ссылки
- (англ.)
- (англ.)

- 2021-10-07
- 1