#! /usr/bin/env python def write_header(tsk): tsk.outputs[0].write('int abc = 423;\n') bld(features='use', rule=write_header, target='b.h', ext_out=['.h'], name='XYZ') tg = bld.program( features = 'aaa', source = 'main.c', includes = '. ..', #cflags = ['-O3'], # for example defines = ['foo=bar'], target = 'myprogram', use = 'M XYZ') # just for fun, make main.c depend on wscript_build bld.add_manual_dependency('main.c', bld.path.find_resource('wscript_build')) # ---------------------------------------- from waflib import TaskGen @TaskGen.feature('aaa') @TaskGen.before('apply_link') def add_one_task(self): """this is a task generator method, it is bound to the feature 'aaa' """ tsk = self.create_task('foo') tsk.outputs = [self.bld.path.find_or_declare('abc.h')] import waflib.Task class foo(waflib.Task.Task): """this is a task class""" before = ['c'] color = 'BLUE' def run(self): self.outputs[0].write('int kik = 343;\n') if bld.env.CC_NAME == 'msvc': tg.source += ' msvc_resource.rc'