Waf | |
---|---|
Sorts | verktygsprogramvara |
Utvecklaren | Thomas Nagy |
Skrivet i | Pytonorm |
Operativ system | Windows , POSIX |
senaste versionen | 2.0.20 ( 24 november 2019 ) |
Licens | BSD |
Hemsida | waf.io |
Waf är ett byggautomationssystem skrivet i Python med Python -skriptade konfigurationsfiler. Huvudförfattare är Thomas Nagy .
Har inbyggt stöd för C , C++ , D , Java , Fortran , Qt ; ger generering av TeX- och LaTeX- dokument . Stöd för andra språk eller filformat kan implementeras med hjälp av anpassade tillägg ( verktyg ). För C och C++ analyseras beroenden automatiskt och, till skillnad från make, behöver du inte köra make depend-kommandot separat . Det finns också en inbyggd möjlighet att söka efter filer som behövs för montering (#inkludera-filer, bibliotek och andra monteringsartefakter).
MD5 -kontrollsumma-filinnehållsändringsdetektering stöds , tillsammans med traditionell ändringsdetektering efter filskrivtid. Det finns möjlighet till parallell montering. Dessutom används cachning för att påskynda den byggliknande ccachen , men för alla filtyper.
Under en lång tid använde KDE -projektet paketet GNU build system (Autotools) för att bygga, men på grund av begränsningarna hos det senare beslutade det att byta till SCons [1] . Som en del av denna övergång skapade Thomas Nagy verktyget BKsys, som var tänkt att köras ovanpå SCons och tillhandahålla funktionalitet som liknar Autotools. Nagy beslutade dock senare att de arkitektoniska bristerna hos SCons (särskilt prestandaproblemet på stora projekt) var för stora och svåra att åtgärda. Så han bestämde sig för att helt skriva om SCons och resultatet blev "Waf".
Ett tag ansåg KDE -projektet BKsys (och senare Waf) som sitt huvudbyggsystem, men valet gjordes till förmån för CMake , eftersom BKsys inte löste problemen med SCons, och Waf fortfarande var i alfaversion [1] . Systemet har dock fått en viss distribution, i synnerhet används det av Samba , Ardor , Geany , Jack Audio- projekten .
Ett exempel på en enkel wscript-fil som kompilerar filen "hello-world.c" med en av de tillgängliga C-kompilatorerna:
topp = '.' ut = 'bygga' def options ( opt ): opt . ladda ( 'compiler_c' ) def configure ( conf ): conf . ladda ( 'compiler_c' ) def build ( bld ): bld . program ( source = 'hello-world.c' , target = 'hello-world' , features = 'c cprogram' )Bygget av projektet startas av följande kommando:
waf configure build
Monteringsautomationssystem | |
---|---|