代码之家  ›  专栏  ›  技术社区  ›  wal

如何在Xcode中使用Doxygen?

  •  4
  • wal  · 技术社区  · 16 年前

    我正在尝试将Doxygen与Xcode一起使用。我跟着火车走 Apple tutorial .在犯了几个错误之后,我构建了项目并生成了文档。我发现如果你保存好氧气。从Doxygen进行配置,并在目录名中使用空格“”,您将遇到问题和其他问题。

    但还有最后一个问题:

    ./search/search.png
    ./tab_b.gif
    ./tab_l.gif
    ./tab_r.gif
    ./tabs.css
    /Developer/usr/bin/docsetutil index com.mycompany.DoxygenExample.docset
    2010-03-31 12:30:53.847 docsetutil[46338:807] Error converting XML to CoreData: Error Domain=NSXMLParserErrorDomain Code=76 UserInfo=0x1247d0 "Line 8: Opening and ending tag mismatch: Subnodes line 0 and Node
    "
    Failed to create docset indexer object
    make: *** [docset] Error 1
    load documentation set with path "/Users/WB/Library/Developer/Shared/Documentation/DocSets/"
    

    我不知道是什么问题??知道吗?

    我使用的是核心数据——sqlite。

    4 回复  |  直到 12 年前
        1
  •  4
  •   Jano teo    16 年前

    解析器告诉您XML格式不正确,但通常会显示该错误,因为在运行docsetutil之前没有生成任何内容。

    第一件事应该是检查控制台输出的许多行,并寻找警告,可能存在。还可以查找生成的文档集,然后右键单击>显示内容。如果在文档中看不到很多html文件,同样的事情是:生成文档失败,而docsetutil与此无关。顺便说一句,使用CoreData的是docsetutil,无论您是否在项目中使用它。

    我不明白苹果为什么不提供更紧密集成的类似强氧剂的工具。或者比Crustify更好的代码格式化程序。拿着这些该死的工具,稍微改进一下。啊!

        2
  •  1
  •   John SnakeOil    14 年前

    从节点的生成中可以知道一个错误。Doxygen的xml。这里引用了它 https://bugzilla.gnome.org/show_bug.cgi?id=671591 并且应该在下一个doxygen版本(V 1.8.0之后)中进行更正:

    在节点的末尾。xml还有一个额外的

    -静音选项是抑制错误的变通方法,但此参数不允许dosetgeneration正常工作。

    $DOXYGEN_PATH $TEMP_DIR/doxygen.config
    
    make -C $TEMP_DIR/DoxygenDocs.docset/html install
    

    插入以下代码

    注意:该脚本在$TEMP_DIR中工作,而不是像AppleScript那样在SOURCE_ROOT中工作

    $DOXYGEN_PATH $TEMP_DIR/doxygen.config
    
    #  make will invoke docsetutil. Take a look at the Makefile to see how this is done.
    
    
    LINE=`xmllint  --c14n $TEMP_DIR/DoxygenDocs.docset/html/Nodes.xml 2>&1  |  awk 'NR == 1 {print $1}' | cut -d':' -f 2`
    
    ECHO $LINE
    
    if [ $LINE -gt 0 ]
    then 
    echo "XML Cleaning "
    sed  -i.bak $LINE'd'  $TEMP_DIR/DoxygenDocs.docset/html/Nodes.xml
    
    fi 
    
    make -C $TEMP_DIR/DoxygenDocs.docset/html install
    

    注意:awk和sed当然可以结合在一起。

        3
  •  0
  •   Fred    16 年前

    所以长话短说,脚本会动态创建一个Doxyfile,并且不会递归地扫描所有子目录。

    看看这篇帖子:

    http://www.duckrowing.com/2010/03/18/documenting-objective-c-with-doxygen-part-ii/

    第二篇文章中有一个脚本基于苹果的脚本,不应该有这个问题。

        4
  •  0
  •   JJD    16 年前

    我使用上述脚本的扩展版本,但基于相同的原则。虽然这一次在另一个项目上一切正常,但我的脚本失败了。 docset的生成工作正常,但make命令会产生以下错误。

    x ./search/search_r.png
    2010-07-26 17:36:01.815 docsetutil[8441:903] 
    Error converting XML to CoreData: 
    Error Domain=NSXMLParserErrorDomain 
    Code=76 
    UserInfo=0x1006105e0 
    "Line 8: Opening and ending tag mismatch: Subnodes line 0 and Node"
    Failed to create docset indexer object
    make: *** [docset] Error 1
    

    我使用的make命令是: make --silent -C "$DOCSET_OUTPUT/html" install . 为了便于阅读,我在错误消息中添加了换行符。