2010-03-31 27 views
4

我正在尝试在Xcode中使用Doxygen。我跟着Apple tutorial。几次失误后,我建立了项目并生成了文档。我发现如果你保存了Doxygen的doxygen.config,并在目录名称中使用空格“”,那么你将遇到问题和其他问题。如何在Xcode中使用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/" 

我不知道是什么问题?任何想法?

我正在使用Core Data - sqlite。

回答

0

我使用上述脚本的扩展版本,但基于相同的原则。虽然这一次我的脚本失败了,但其他项目的一切正常。 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。 为了提高可读性,我在错误消息中添加了换行符。

4

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

首先应该查看控制台输出的许多行并查找警告,可能是在那里。还要查找您生成的文档集,然后右键单击>显示内容。如果你没有看到许多带有文档的html文件,那么同样的事情:你在生成文档方面失败了,而docsetutil无能为力。顺便说一下,它是谁使用CoreData的docsetutil,如果你在你的项目中使用它并不重要。

我不明白苹果为什么不提供更紧密集成的doxygen-like工具。或者比Crustify更好的代码格式化程序。只要拿这些该死的工具,稍微改进一下。哎呀!

1

Doxygen生成的Nodes.xml存在一个已知的错误。在此引用https://bugzilla.gnome.org/show_bug.cgi?id=671591,应在下一版本doxygen的(邮政V 1.8.0)进行修正:

在Nodes.xml的尽头有一个额外的

的-silence选项的解决方法来抑制错误,但此参数不允许dosetgeneration正常工作。

$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当然可以在一行结合。