我正在尝试将waf设置为我正在处理的项目的构建系统。编译和使用项目中已有的文件工作得很好,很容易理解。但是,我现在要做的是下载newlib,应用补丁,构建它,然后用它来编译我项目中的更多文件。我不完全确定如何使用waf来做到这一点。这是我到目前为止所做的:
project
+-- src
+-- stuff.c
+-- wscript
+-- newlib
+-- newlib.patch
+-- wscript
+-- wscript
这是newlib / wscript文件的内容:
def configure(ctx):
'''
Configure the library.
'''
# tools
ctx.load("flex")
ctx.load("bison")
# locate programs
ctx.find_program("wget", var="WGET")
ctx.find_program("tar", var="TAR")
ctx.find_program("patch", var="PATCH")
ctx.find_program("strip")
# XXX
ctx.env["NEWLIB_URL"] = "ftp://sourceware.org/pub/newlib/newlib-2.0.0.tar.gz"
def build(ctx):
'''
Build the library.
'''
# download the library
ctx(rule="${WGET} -q -O ${TGT} ${NEWLIB_URL}", target="newlib-2.0.0.tar.gz")
ctx(rule="${TAR} -xzf ${SRC} -C newlib", source="newlib-2.0.0.tar.gz")
# apply the patch
ctx(rule="${PATCH} -p0 -i ${SRC}", source="newlib.patch")
应用补丁的最后一条规则不起作用,但即使这样做,我也忍不住觉得我做错了。这里的正确方法是什么?有没有更好的方法呢?