waf:在自定义规则中使用选项



我有一个waf构建脚本,需要调用一个官方不支持的程序。

#file wscript
def configure(conf):
conf.env.LIB = ['c', 'd']
conf.env.INCLUDES = ['include']
conf.env.LIB_xml2 = ['xml2']
conf.env.INCLUDES_xml2 = ['/usr/include/libxml2']
def build(bld):
bld(rule="dstep ${SRC} -o ${TGT} ${LIB_ST:LIB} ${DINC_ST:INCLUDES}",
use="xml2",
source="header.h",
target="target.d",
)

扩展到dstep header.h -o target.d -lc -ld -I/usr/include/libxml2,因此只有全局LIB变量有效,use参数似乎完全被忽略了。

如何使它尊重use参数?

要使waf处理use关键字,必须将use特性添加到任务生成器中。您还需要添加"compile"感知功能,如c, d或cxx。这样的:


def build(bld):
bld(
rule="dstep ${SRC} -o ${TGT} ${LIB_ST:LIB} ${DINC_ST:INCLUDES}",
features = ["use", "c"],
use="xml2",
source="header.h",
target="target.d",
)

您还可以为您的dstep编写细节(您必须定义dstep特性并定义USELIB_VARS["dstep"])

注:参见waf代码中的ccroot.py

最新更新