在waf构建变量中使用不同的源

2024-06-03 05:52:43 发布

您现在位置:Python中文网/ 问答频道 /正文

基于此,可以在waf中将不同的variants构建到不同的输出目录7.2.2。更改变量的输出目录/配置集https://waf.io/book/#_custom_build_outputs

但是我不明白如何根据variant包含不同的文件或目录。 我像这样修改了waf书中的示例,但是我缺少如何构建不同的源文件或包含来自不同目录的文件。在

def configure(ctx):
    pass

def build(ctx):
    if not ctx.variant:
        ctx.fatal('call "waf a" or "waf b", and try "waf --help"')
    # for variant "a" it should build "a.c" and fpr "b" it should build "b.c"
    # for a: bld.program(source='a.c', target='app', includes='.')
    # for b: bld.program(source='b.c', target='app', includes='.')

from waflib.Build import BuildContext
class a(BuildContext):
    cmd = 'a'
    variant = 'a'

from waflib.Build import BuildContext
class b(BuildContext):
    cmd = 'b'
    variant = 'b'

Tags: and文件build目录sourcefordefit
1条回答
网友
1楼 · 发布于 2024-06-03 05:52:43

您可以运行python waf configure来配置项目。之后,使用命令build_abuild_b生成一个变量

def configure(ctx):
    load('compiler_c')

def build(bld):
    if not bld.variant:
        bld.fatal('call "waf build_a" or "waf build_b", and try "waf  help"')

    if bld.variant == 'a':
        bld.program(source='a.c', target='app', includes='.')
    elif bld.variant == 'b':
        bld.program(source='b.c', target='app', includes='.')
    else:
        bld.fatal('"')

# create build and clean commands for each build context
from waflib.Build import BuildContext, CleanContext

for x in 'a b'.split():
    for y in (BuildContext, CleanContext):
        name = y.__name__.replace('Context','').lower()
        class tmp(y):
            __doc__ = '''executes the {} of {}'''.format(name, x)
            cmd = name + '_' + x
            variant = x

相关问题 更多 >