gpt4 book ai didi

waf - 我的 Waf wscript 是否可以调用当前目录中的其他 wscript?

转载 作者:行者123 更新时间:2023-12-01 14:24:40 28 4
gpt4 key购买 nike

我正在使用 Waf 构建一个项目。它有几个第三方依赖项,我想从我的主要 wscript 构建每个依赖项。我的项目是这样组织的:

/boost/
/gtest/
/source/
/waf
/wscript
/wscript_boost
/wscript_gtest

每个“依赖项”wscript_* 都定义了命令,就像我的主 wscript 一样。

def options(opt): pass
def configure(conf): pass
def build(bld): pass

如果我将依赖项 wscript 文件放在依赖项文件夹中,我可以只调用 opt.recurse('boost gtest'),但我不想将我的文件与第三方文件混合。

我的 wscript 有什么方法可以调用 wscript_boostwscript_gtest 吗?

最佳答案

我认为在当前的 Waf 实现中这是不可能的(waflib.Context.Context.recurse 使用全局 WSCRIPT_FILE 变量)。

虽然丑陋,但可以在您的主要 wscript 开头破解它:

import waflib.Context
original_recurse = waflib.Context.Context.recurse

def new_recurse(ctx,*args, **kwargs):
original_wscript_file = waflib.Context.WSCRIPT_FILE
try:
waflib.Context.WSCRIPT_FILE = (original_wscript_file +
kwargs.pop('suffix', ''))

original_recurse(ctx, *args, **kwargs)
finally:
waflib.Context.WSCRIPT_FILE = original_wscript_file

waflib.Context.Context.recurse = new_recurse

你的主要 wscript 应该是这样的:

def configure(cfg):
cfg.recurse(suffix='_boost')
cfg.recurse(suffix='_gtest')

请注意,存在一些副作用,因为当您在 wscript_boost 文件中时,WSCRIPT_FILE 会带有后缀。

您也可以submit an issue到waf项目。

关于waf - 我的 Waf wscript 是否可以调用当前目录中的其他 wscript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16177955/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com