【问题标题】:How to use Doxygen with Xcode?如何在 Xcode 中使用 Doxygen?
【发布时间】:2010-03-31 15:37:49
【问题描述】:

我正在尝试将 Doxygen 与 Xcode 一起使用。我关注了Apple tutorial。在几次错误之后,我构建了项目并生成了文档。我发现如果你从 Doxygen 保存 doxygen.config 并在目录名称中使用空格“”,你会遇到问题和其他事情。

但还有最后一个问题:

./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/"

不知道是什么问题??有什么想法吗?

我正在使用 Core Data - sqlite。

【问题讨论】:

    标签: objective-c xcode core-data doxygen


    【解决方案1】:

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

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

    我不明白为什么 Apple 不提供更紧密集成的类似 doxygen 的工具。或者比 Crustify 更好的代码格式化程序。只需使用该死的工具并对其进行一些改进。啊!

    【讨论】:

      【解决方案2】:

      Doxygen 生成 Nodes.xml 时存在一个已知错误。它在此处引用 https://bugzilla.gnome.org/show_bug.cgi?id=671591 并应在下一个 doxygen 版本(Post V 1.8.0)中更正:

      在 Nodes.xml 的末尾有一个额外的

      -silence 选项是抑制错误的解决方法,但此参数不允许剂量生成正常工作。

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

      插入以下代码

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

      $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】:

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

        看看这篇文章:

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

        第二篇文章中包含一个脚本,它基于 Apple 的脚本,不应该有这个问题。

        【讨论】:

          【解决方案4】:

          我使用上述脚本的扩展版本,但基于相同的原则。尽管这次在另一个项目上一切正常,但我的脚本失败了。 文档集的生成工作正常,但 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。 为了便于阅读,我在错误消息中添加了换行符。

          【讨论】:

            猜你喜欢
            • 2020-08-19
            • 2011-09-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-02-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多