Waf

Waf
Typ nástrojový software
Vývojář Tomáš Nagy
Zapsáno v Krajta
Operační systém Windows , POSIX
Nejnovější verze 2.0.20 ( 24. listopadu 2019 )
Licence BSD
webová stránka waf.io

Waf  je systém pro automatizaci sestavování napsaný v Pythonu pomocí skriptovaných konfiguračních souborů Pythonu. Hlavním autorem je Thomas Nagy .

Má vestavěnou podporu pro C , C++ , D , Java , Fortran , Qt ; poskytuje generování dokumentů TeX a LaTeX . Podporu dalších jazyků nebo formátů souborů lze implementovat pomocí vlastních rozšíření ( nástroje ). Pro C a C++ jsou závislosti analyzovány automaticky a na rozdíl od make nemusíte spouštět příkaz make depend samostatně . K dispozici je také vestavěná schopnost vyhledávat soubory potřebné pro sestavení (#include-files, knihovny a další artefakty sestavení).

Je podporována detekce změn obsahu souboru kontrolního součtu MD5 spolu s tradiční detekcí změn podle času zápisu souboru. Je zde možnost paralelní montáže. Ukládání do mezipaměti se také používá k urychlení sestavení  - jako ccache , ale pro jakýkoli typ souboru.

Historie

Projekt KDE dlouhou dobu používal pro sestavení balík GNU build system (Autotools), ale vzhledem k jeho omezením se rozhodl přejít na SCons [1] . V rámci tohoto přechodu vytvořil Thomas Nagy utilitu BKsys, která měla běžet nad SCons a poskytovat funkcionalitu podobnou Autotools. Nagy se však později rozhodl, že architektonické nedostatky SCons (zejména problém s výkonem na velkých projektech) byly příliš velké a obtížně opravitelné. Rozhodl se tedy SCons kompletně přepsat a výsledkem bylo „Waf“.

Projekt KDE nějakou dobu považoval BKsys (a později Waf) za svůj hlavní systém sestavení, ale volba byla učiněna ve prospěch CMake , protože BKsys neřešil problémy SCons a Waf byl stále v alfa verzi [1] . Systém se však dočkal určité distribuce, zejména jej používají projekty Samba , Ardor , Geany , Jack Audio .

Příklad

Příklad jednoduchého souboru wscript, který zkompiluje soubor "hello-world.c" pomocí jednoho z dostupných kompilátorů C:

nahoře = '.' ven = 'sestavit' def options ( opt ): opt . načíst ( 'compiler_c' ) def configure ( conf ): conf . načíst ( 'compiler_c' ) def build ( bld ): bld . program ( source = 'hello-world.c' , target = 'hello-world' , features = 'c cprogram' )

Sestavení projektu se spustí následujícím příkazem:

sestavení konfigurace waf

Poznámky

  1. 1 2 Proč projekt KDE přešel na CMake . Získáno 22. prosince 2010. Archivováno z originálu 7. května 2011.

Odkazy