Zakładając, że korzystasz z najnowszej wersji pakietu waf (1.5.9 w chwili pisania), dzikie karty można określić za pomocą metody glob()
w kontekście kompilacji. Więc można napisać następujące:
bld.new_task_gen(
features = 'cc cshlib',
source = bld.glob('*.c'),
target='mylib')
Jeśli korzystasz ze starszej wersji WAF, który nie ma glob, to nie jest to metoda find_sources_in_dirs
które można użyć:
lib = bld.new_task_gen(
features = 'cc cshlib',
target = 'mylib')
lib.find_sources_in_dirs('.')
Ta metoda jest nadal w Waf, ale jest przeznaczony na deprecjację i może ostatecznie zniknąć.
Zmienne i opcjonalne są teraz opcjonalne, więc nie są potrzebne - domyślnie są to "." i "buduj" mimo to. Nie powinieneś dodawać "lib" do nazwy docelowej, odbywa się to automatycznie w sposób specyficzny dla platformy (w systemie Windows nie jest dodawana żadna biblioteka, a biblioteki współdzielone korzystają z .dll). Debugowanie vs Wydanie kompilacji jest zaskakująco ciernistą kwestią. Pierwotnie Waf zawierał tę funkcję, ale w pewnym momencie został usunięty i nigdy nie został ponownie dodany. Jest to powszechna prośba na liście mailingowej, która może pojawić się w przyszłości. Tymczasem możesz zrobić dużo gorzej niż użyć gjc's cflags module. Po prostu dodaj go do swojego katalogu projektu. Ostateczna wscript będzie wówczas:
VERSION='0.0.1'
APPNAME='mylib'
def set_options(opt):
opt.tool_options('compiler_cc')
opt.tool_options('cflags', tooldir='.')
def configure(conf):
conf.check_tool('compiler_cc')
conf.check_tool('cflags', tooldir='.')
def build(bld):
bld.new_task_gen(
features = 'cc cshlib',
source = bld.glob('*.c'),
target=APPNAME)
I założyć build debugowania byś uruchomić następujące:
./waf configure -d debug
Jeśli używasz bibliotek we własnych podkatalogów, to należy prawdopodobnie mieć najwyższy poziom Wskrypt i używać techniki bld.add_subdirs()
do dodawania katalogów biblioteki/programu. Każdy podkatalog miałby własny plik wscript_build. Następnie można użyć właściwości export_incdirs
i uselib_local
, aby określić odpowiednie katalogi włączone między biblioteką a "modułami" programu.
Po tym pytaniem Spytałem też: http://stackoverflow.com/questions/1596279/why-has-nobody-created-an-open-source-build-system-for-the-brain-dead Które doprowadziło mnie do zbadania http://premake.sf.net/ –