Dieses Dokument wird durch "waf-1.9.3" bestätigt. Bitte überprüfen Sie dies mit Originaldokumenten, da sich möglicherweise Änderungen ergeben.
Zusammenfassung über Waf, ein Build-Tool von Python
Waf definiert eine Datei namens "wscript" und erstellt sie.
Da die japanischen Materialien solide sind, sollten Sie sich grundsätzlich auf die folgenden Seiten beziehen. (Da es von Freiwilligen übersetzt wird, ist es nicht die neueste? * Bestätigung erforderlich) The Waf Book
Die englischen Originalmaterialien lauten wie folgt. The Waf Book
verdienen
Fehler
Laden Sie die Quelle von Official Site oder Github herunter.
Laden Sie die Ausführungsbinärdatei direkt herunter
$ wget --no-check-certificate https://waf.io/waf-1.9.3 -O waf
Aus der Quelle erstellen
$ 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
Wenn Sie aus dem Quellcode erstellt haben, befindet sich im Repository eine Demo. Es gibt Beispiele in verschiedenen Sprachen, auf die Sie verweisen können.
C-Sprachbeispiel-Build-Test
$ 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
Implementierungsverfahrenwaf
definiert die Funktion in wscript
als * waf Befehl *.
Als Beispiel wird der waf-Befehl "Hallo" unten definiert.
Stichprobe
#! /usr/bin/env python
# encoding: utf-8
def hello(ctx):
print('hello world')
Führen Sie den Befehl waf hallo aus
$ ./waf hello
hello world
'hello' finished successfully (0.001s)
Sie können feststellen, dass der Befehl ausgeführt wird, indem Sie "Hallo" als Ausführungsbefehl für "Waf" angeben.
Siehe unten im Originaldokument The Waf Book
main.cpp
#include <iostream>
int main(int argc, char const* argv[])
{
std::cout << "hoge" << std::endl;
return 0;
}
C++Erstellen Sie das Projekt
#! /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')
Ergebnisse erstellen und ausführen
$ ./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
Weitere Informationen (einschließlich, Erstellen einer gemeinsam genutzten Bibliothek usw.) finden Sie im Originaldokument. The Waf Book
TODO: Fügen Sie hinzu, wenn Sie Zeit haben
Es scheint, dass Cross-Build durch Ändern der Umgebungsvariablen unterstützt werden kann.
The Waf Book Re: [waf-users 4515] Cross-Kompilieren von QNX mit qcc --Google Groups
Waf: the meta build system Einführung von waf - Mackey's Lab
Das Folgende ist japanisches Material, aber bitte beachten Sie, dass der Inhalt veraltet ist (Artikel 2010 & 2011) The Waf Book waf tutorial-pure function type verschiedene Notizen
Recommended Posts