Ce document est confirmé par «waf-1.9.3». Veuillez vérifier avec Documents originaux car il peut y avoir des changements.
Résumé sur Waf, un outil de construction conçu par python
Waf définit un fichier appelé wscript
et le construit.
Étant donné que les matériaux japonais sont solides, je pense que vous devriez essentiellement vous référer aux pages suivantes. (N'est-ce pas le dernier parce qu'il est traduit par des bénévoles? * Confirmation requise) The Waf Book
Les documents originaux en anglais sont les suivants. The Waf Book
mérite
Démérite
Téléchargez la source depuis Site officiel ou Github.
Télécharger directement le binaire d'exécution
$ wget --no-check-certificate https://waf.io/waf-1.9.3 -O waf
Construire à partir de la source
$ git clone https://github.com/waf-project/waf.git
$ cd waf
$ ./waf-light configure build
$ ls
build build_system_kit ChangeLog configure demos DEVEL docs playground README.md tests TODO utils waf waflib waf-light wscript zip
Si vous avez construit à partir des sources, il existe une démo dans le référentiel. Il existe des exemples dans différentes langues, vous pouvez donc vous y référer.
Test de construction d'exemple de langage C
$ cd demos
$ ls
asm bisonflex c c++ csharp d dbus fortran glib2 intltool java jni lua mac_app perl precious python qt5 ruby subst tex unit_test vala variants wscript
$ cd c
$ ../../waf configure build
Setting top to : /home/user/work/waf/demos/c
Setting out to : /home/user/work/waf/demos/c/build
Checking for 'gcc' (C compiler) : /usr/bin/gcc
Checking for code snippet : yes
Checking for code snippet : yes
Checking for code snippet : yes
Checking for libraries : yes
Checking for library m : yes
Checking for large file support : yes
Checking for inline : inline
Checking for endianness : little
Checking for headers in parallel : started
... testing an arbitrary build function : ok
... stdio : yes
... unistd : yes
... optional xyztabcd.h : no
... stdlib : aye
... malloc : yes
-> processing test results : 1 test failed
Checking for header stdio.h : yes
Checking for code snippet : yes
'configure' finished successfully (1.405s)
Waf: Entering directory `/home/user/work/waf/demos/c/build'
[ 1/16] Creating build/program/b.h
[ 2/16] Creating build/abc.h
[ 3/16] Creating build/stlib/foo.h
[ 4/16] Processing wscript
[ 5/16] Trying again wscript
-Lm -Lncurses -L../wscript ayedoh -Laaa -L/home/user/work/waf/demos/c/wscript
-Lm -Lncurses -L../wscript ayedoh -Laaa -L/home/user/work/waf/demos/c/wscript
[ 6/16] Compiling stlib/main.c
[ 7/16] Compiling program/main.c
[ 8/16] Compiling shlib/test_shlib.c
[ 9/16] Compiling shlib/main.c
[10/16] Compiling stlib/test_staticlib.c
[11/16] Linking build/program/myprogram
[12/16] Linking build/shlib/libmy_shared_lib.so
[13/16] Linking build/stlib/libmy_static_lib.a
[14/16] Linking build/shlib/test_shared_link
[15/16] Linking build/stlib/test_static_link
[16/16] Symlinking build/shlib/libmy_shared_lib.so
Waf: Leaving directory `/home/user/work/waf/demos/c/build'
'build' finished successfully (1.162s)
wscript
waf
définit la fonction dans wscript
comme la * commande waf *.
À titre d'exemple, la commande waf «bonjour» est définie ci-dessous.
échantillon
#! /usr/bin/env python
# encoding: utf-8
def hello(ctx):
print('hello world')
Exécuter la commande waf bonjour
$ ./waf hello
hello world
'hello' finished successfully (0.001s)
Vous pouvez dire que la commande est en cours d'exécution en spécifiant «hello» comme commande d'exécution pour «waf».
Voir ci-dessous dans le document original The Waf Book
main.cpp
#include <iostream>
int main(int argc, char const* argv[])
{
std::cout << "hoge" << std::endl;
return 0;
}
C++Construisez le projet
#! /usr/bin/env python
# encoding: utf-8
def options(opt):
opt.load('compiler_cxx')
def configure(conf):
conf.load('compiler_cxx')
def build(bld):
bld.program(source='main.cpp', target='app')
Créer et exécuter des résultats
$ ./waf configure build
Setting top to : /home/user/work/test
Setting out to : /home/user/work/test/build
Checking for 'g++' (C++ compiler) : /usr/bin/g++
'configure' finished successfully (0.051s)
Waf: Entering directory `/home/user/work/test/build'
Waf: Leaving directory `/home/user/work/test/build'
'build' finished successfully (0.003s)
$ ./build/app
hoge
Pour d'autres détails (inclure, construire une bibliothèque partagée, etc.), veuillez vous référer au document d'origine. The Waf Book
TODO: Ajoutez si vous avez le temps
Il semble que la construction croisée puisse être prise en charge en modifiant la variable d'environnement.
The Waf Book Re: [waf-users 4515] Compilation croisée de QNX à l'aide de qcc --Google Groups
Waf: the meta build system Introduction de waf --Mackey's Lab
Ce qui suit est du matériel japonais, mais veuillez noter que le contenu est obsolète (article de 2010 et 2011) The Waf Book notes diverses sur le type de fonction pure du didacticiel waf
Recommended Posts