2012-04-08 11 views
1

Der waf Befehl waf build zeigt Compiler-Fehler (falls vorhanden), während waf debug oder waf release nicht und immer fehlschlägt, die folgende wscript Datei verwendet wird (oder vielleicht die wscript Datei hat einige ich andere Mangel sind zur Zeit nicht bekannt):waf - Werke bauen, individuelle Ziele bauen scheitern

APPNAME = 'waftest' 
VERSION = '0.0.1' 
def configure(ctx): 
    ctx.load('compiler_c') 
    ctx.define('VERSION', VERSION) 
    ctx.define('GETTEXT_PACKAGE', APPNAME) 

    ctx.check_cfg(atleast_pkgconfig_version='0.1.1') 
    ctx.check_cfg(package='glib-2.0', uselib_store='GLIB', args=['--cflags', '--libs'], mandatory=True) 
    ctx.check_cfg(package='gobject-2.0', uselib_store='GOBJECT', args=['--cflags', '--libs'], mandatory=True) 
    ctx.check_cfg(package='gtk+-3.0', uselib_store='GTK3', args=['--cflags', '--libs'], mandatory=True) 
    ctx.check_cfg(package='libxml-2.0', uselib_store='XML', args=['--cflags', '--libs'], mandatory=True) 

    ctx.check_large_file(mandatory=False) 
    ctx.check_endianness(mandatory=False) 
    ctx.check_inline(mandatory=False) 

    ctx.setenv('debug') 
    ctx.env.CFLAGS = ['-g', '-Wall'] 
    ctx.define('DEBUG',1) 

    ctx.setenv('release') 
    ctx.env.CFLAGS = ['-O2', '-Wall'] 
    ctx.define('RELEASE',1) 




def pre(ctx): 
    print ('Building [[[' + ctx.variant + ']]] ...') 


def post(ctx): 
    print ('Building is complete.') 

def build(ctx): 
    ctx.add_pre_fun(pre) 
    ctx.add_post_fun(post) 

# if not ctx.variant: 
#  ctx.fatal('Do "waf debug" or "waf release"') 

    exe = ctx.program(
     features = ['c', 'cprogram'], 
     target = APPNAME+'.bin', 
     source = ctx.path.ant_glob(['src/*.c']), 
     includes = ['src/'], 
     export_includes = ['src/'], 
     uselib = 'GOBJECT GLIB GTK3 XML' 
    ) 
# for item in exe.includes: 
#  print(item) 



from waflib.Build import BuildContext 

class release(BuildContext): 
    cmd = 'release' 
    variant = 'release' 

class debug(BuildContext): 
    cmd = 'debug' 
    variant = 'debug' 

Fehler aus waf debug:

Build failed 
-> task in 'waftest.bin' failed (exit status -1): 
    {task 46697488: c qqq.c -> qqq.c.1.o} 
[useless filepaths] 

ich einen Blick auf den waf Demos hatte, gelesen Die wafbook at section 6.2.2 aber diese haben mich nicht mit wertvollen Informationen versorgt, um dieses Problem zu beheben.

Was ist falsch, und wie behebe ich es?

Antwort

2

Sie müssen mindestens die folgenden Funktionen ausführen:

def configure(ctx): 
    ... 
    ctx.setenv('debug') 
    ctx.load('compiler_c') 
    ... 

Da die cfg.setenv Funktion setzt ganze bisherige Umgebung. Wenn Sie vorherige Umgebung speichern möchten, können Sie cfg.setenv('debug', env=cfg.env.derive()) tun.

Auch müssen Sie nicht explizit die features = ['c', 'cprogram'] angeben, da es redundant ist, wenn Sie bld.program(...) aufrufen.

P.S. Vergessen Sie nicht, nach der Änderung der wscript-Datei neu zu konfigurieren.