Installation 如何使用waf递归安装目录

Installation 如何使用waf递归安装目录,installation,waf,Installation,Waf,我目前使用以下valadoc构建任务为我的vala应用程序生成api文档: doc=bld.new\u task\u gen( 功能='valadoc', 输出_dir='../doc/html', package_name=bld.env['package_name'], package_version=bld.env['version'], 软件包='gtk+-3.0 gee-1.0 libxml-2.0 x11 gdk-x11-3.0 libpeas-gtk-1.0 libpeas-1.0

我目前使用以下valadoc构建任务为我的vala应用程序生成api文档:

doc=bld.new\u task\u gen(
功能='valadoc',
输出_dir='../doc/html',
package_name=bld.env['package_name'],
package_version=bld.env['version'],
软件包='gtk+-3.0 gee-1.0 libxml-2.0 x11 gdk-x11-3.0 libpeas-gtk-1.0 libpeas-1.0 config xtst gdk-3.0',
vapi_dirs='../vapi',
力=真)
path=bld.path.find_dir('../src')
doc.files=path.ant_glob(incl='***.vala')
此任务在输出目录中创建一个目录html,其中包括几个包含html和图片文件的子目录

据我所知,我正在尝试将这些文件安装到/usr/share/doc/projectname/html/。为此,我在wscript_构建文件中添加了以下内容(在我找到的文档之后):

output_dir=doc.bld.path.find_或_declare(“../doc/html”)
doc.outputs=output\u dir.ant\u glob(包括“***”)
doc.bld.install_文件('${PREFIX}/share/doc/projectname/html',doc.outputs)
但是,这会导致错误“缺少节点签名”。有人知道如何避开这个错误吗?或者有没有一种简单的方法可以使用waf递归地安装目录


您可以找到一个完整的示例。

我对生成的文件有类似的问题,必须更新相应节点对象的签名。尝试创建任务:

def签名任务(任务):
对于task.generator.bld.path.find_dir('../doc/html').ant_glob('***',remove=False)中的x:
x、 sig=Utils.h_文件(x.abspath())
在生成规则的顶部,尝试添加:

#支持连续运行任务组
bld.post\u模式=Build.post\u
然后在构建结束时,添加:

#以前的任务属于一个组
bld.add_组()
#此任务最后运行
bld(规则=signature\u task,始终=True,name=“signature\u task”)

使用相对技巧有一种更简单的方法

bld.install\u文件(目标,
bld.path.ant_glob('../doc/html/**'),
cwd=bld.path.find_dir('../doc/html'),
相对_技巧=真)

这将从glob获取文件列表,去掉前缀,并将其放入目标。

谢谢。这帮了大忙。然而,还需要进行一些调整。请参阅一般信息---上述问题与尝试安装由ctx.install\u文件编译到目录的库文件时出现的问题相同