我有一个waf脚本添加了一些选项,因此我使用了waflib中的Options。
最小的工作示例是:
来自waflib导入上下文,选项来自waflib.Tools.compiler_c import c_compiler…
对于选项,选项上下文有一个 parser 属性是一个python optparse.OptionParser 。你可以使用 remove_option 的方法 OptionParser :
parser
optparse.OptionParser
remove_option
OptionParser
def options(opt): opt.parser.remove_option("--top") opt.parser.remove_option("--no-msvs-lazy")
对于命令,waf中有一个自动注册Context类的元类(参见 waflib.Context来源 )。
所以 Context 类存储在全局变量中 waflib.Context.classes 。要摆脱它们,你可以操纵这个变量。例如摆脱 StepContext 等等,你可以这样做:
Context
waflib.Context.classes
StepContext
import waflib def options(opt): all_contexts = waflib.Context.classes all_contexts.remove(waflib.Build.StepContext) all_contexts.remove(waflib.Build.InstallContext) all_contexts.remove(waflib.Build.UninstallContext)
命令 dist/distcheck 是特殊情况 waflib.Scripting 。要摆脱它们并不容易。
dist/distcheck
waflib.Scripting