Waf

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Waf
Тип

инструментальное программное обеспечение

Разработчик

Thomas Nagy

Написана на

Python[1]

Операционная система

Windows, POSIX

Последняя версия

1.7.13 (10 сентября 2013 года)

Лицензия

BSD

Сайт

waf.googlecode.com

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

Возможности[править | править исходный текст]

  • Файлы конфигурации являются сценариями на языке Python, что позволяет использовать все возможности этого языка программирования.
  • Встроенная поддержка C, C++, D, Java, Fortran и Qt. Возможность генерации документов TeX и LaTeX. Поддержка других языков или форматов файлов может быть реализована с помощью пользовательских расширений (tools).
  • Для языков C и C++ автоматически анализируются зависимости. В отличие от make не нужно отдельно выполнять команду make depend.
  • Обнаружение изменения содержимого файлов по контрольным суммам MD5, наряду с традиционным обнаружением изменений по времени записи файла.
  • Возможность параллельной сборки.
  • Встроенная возможность поиска необходимых для сборки файлов (#include файлы, библиотеки, и т. д.).
  • Способность кеширования собираемых файлов для ускорения сборки — подобно ccache, но для любых типов файлов.
  • Высокая скорость работы[2]

Пример использования[править | править исходный текст]

Ниже приведен пример очень простого wscript-файла, который компилирует файл «hello-world.c», используя один из доступных компиляторов языка 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

История[править | править исходный текст]

Долгое время проект KDE использовал для сборки пакет GNU build system (Autotools), но в силу ограничений последнего решил перейти на SCons[3]. В рамках данного перехода Thomas Nagy создал служебную программу BKsys, которая должна была работать поверх SCons и предоставлять функциональность, аналогичную Autotools. Однако позже Thomas Nagy решил, что архитектурные недостатки SCons (в частности проблема производительности на крупных проектах) слишком велики и трудно исправимы. Поэтому он решил полностью переписать систему SCons. В результате появился «Waf».

Некоторое время проект KDE рассматривал BKsys (а позже Waf) в качестве своей основной системы сборки, однако далее изменил свой выбор в пользу CMake, так как BKsys не решал проблем SCons, а Waf все ещё находился в состоянии пред-альфы[3].

Программные проекты, использующие Waf[править | править исходный текст]

См. также[править | править исходный текст]

Примечания[править | править исходный текст]

Ссылки[править | править исходный текст]