3

我目前使用以下 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 文件中(按照我在这里找到的文档):

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 递归安装目录?

您可以在此处找到完整的示例。

4

2 回答 2

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")
于 2012-04-15T19:30:57.753 回答
0

使用 relative_trick 有一种更简单的方法。

bld.install_files(destination,
                  bld.path.ant_glob('../doc/html/**'),
                  cwd=bld.path.find_dir('../doc/html'),
                  relative_trick=True)

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

于 2015-10-21T21:35:07.833 回答