我正在和Waf建立一个项目。它有几个第三方依赖项,我想从我的主wscript构建每个依赖项。我的项目组织如下:
/促进// GTEST //资源// …
这样做的方法通常是将wscript放入每个子目录并使用recurse:
/boost/ /boost/wscript /gtest/wscript /source/ /waf /wscript
并使用recurse:
def build(bld): # ... bld.recurse("boost") bld.recurse("gtest") # ...
我不认为在当前的Waf实现中是可能的( waflib.Context.Context.recurse 使用全局 WSCRIPT_FILE 变量)。
waflib.Context.Context.recurse
WSCRIPT_FILE
虽然丑陋,但它 是 可能会在你的主要开始时破解这个 wscript :
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_FILE 当你在里面时,会加上后缀 wscript_boost 文件。
wscript_boost
你也可以 提交问题 到了waf项目。