【问题标题】:waf: Uselib options in custom rulewaf:自定义规则中的 Uselib 选项
【发布时间】:2021-11-25 18:34:28
【问题描述】:

我有一个 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 参数似乎完全被忽略了。

我怎样才能让它尊重使用参数?

【问题讨论】:

    标签: build build-automation waf


    【解决方案1】:

    要让 waf 处理 use 关键字,您必须将 use 功能添加到任务生成器。您还需要添加一个“编译”感知功能,如 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

    【讨论】:

    • 不起作用。 features = ['use', 'uselib'] 也一样
    • 你应该使用像 c, d, cxx 这样的编译特性。如果我有时间,我明天会努力让它工作:)
    • 使用特征 'c' 完成了这项工作。谢谢你。更新你的答案,我会确认的
    • 很高兴我能帮上忙。 waf 是我使用多年的好工具。
    猜你喜欢
    • 1970-01-01
    • 2022-10-24
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    相关资源
    最近更新 更多