我目前使用以下valadoc构建任务为我的vala应用程序生成api文档:
doc = bld.new_task_gen (
features = 'valadoc',
output_dir = '../doc/html',
package_name = bld.env['PACKAGE_NAME'],
package_version = bld.env['VERSION'],
packages = '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',
force = True)
path = bld.path.find_dir ('../src')
doc.files = path.ant_glob (incl='**/*.vala')
此任务在输出目录中创建一个目录html,包括几个带有html和图片文件的子目录。
我所知道的是将这些文件安装到/ usr / share / doc / projectname / html /。为此,我将以下内容添加到wscript_build文件中(根据我找到的文档here):
output_dir = doc.bld.path.find_or_declare('../doc/html')
doc.outputs = output_dir.ant_glob (incl='**/*')
doc.bld.install_files('${PREFIX}/share/doc/projectname/html', doc.outputs)
然而,这会导致错误“缺少节点签名”。有谁知道如何解决这个错误?或者有一种简单的方法用waf递归安装目录吗?
您可以找到完整的样本here。
答案 0 :(得分:3)
我对生成的文件有类似的问题,必须更新相应Node对象的签名。尝试创建任务:
def signature_task(task):
for x in task.generator.bld.path.find_dir('../doc/html').ant_glob('**/*', remove=False):
x.sig = Utils.h_file(x.abspath())
在构建规则的顶部,尝试添加:
#Support running task groups serially
bld.post_mode = Build.POST_LAZY
然后在构建结束时添加:
#Previous tasks belong to a group
bld.add_group()
#This task runs last
bld(rule=signature_task, always=True, name="signature_task")
答案 1 :(得分:0)
使用relative_trick有一种更简单的方法。
bld.install_files(destination,
bld.path.ant_glob('../doc/html/**'),
cwd=bld.path.find_dir('../doc/html'),
relative_trick=True)
这将获取glob中的文件列表,删除前缀,并将其放入目标。