Как использовать Doxygen с Xcode? - PullRequest
4 голосов
/ 31 марта 2010

Я пытаюсь использовать Doxygen с Xcode. Я следовал Apple учебник . После нескольких ошибок я собрал проект и сгенерировал документы. Я обнаружил, что если вы сохраните doxygen.config из 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.

Ответы [ 4 ]

4 голосов
/ 07 октября 2010

Анализатор говорит вам, что XML не правильно сформирован, но эта ошибка обычно отображается, потому что ничего не было сгенерировано ДО запуска docsetutil.

Первым делом нужно пройтись по многим строкам вывода на консоль и посмотреть предупреждения, вероятно, там есть. Также найдите созданный вами набор документов и щелкните правой кнопкой мыши> Показать содержимое. Если вы не видите много html-файлов с документацией, то же самое: вы не смогли сгенерировать документацию, и docsetutil не имеет ничего общего. И, кстати, docsetutil использует CoreData, не имеет значения, используете ли вы его в своем проекте или нет.

Я не понимаю, почему Apple не предоставляет подобный doxygen инструмент, более тесно интегрированный. Или лучший форматировщик кода, чем Crustify. Просто возьмите эти чертовы инструменты и немного их улучшите. Argh!

1 голос
/ 27 апреля 2012

Существует известная ошибка при создании Nodes.xml в Doxygen. На него есть ссылка https://bugzilla.gnome.org/show_bug.cgi?id=671591, и его следует исправить в следующей версии Doxygen (Пост 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, безусловно, могут быть объединены в одну строку.

0 голосов
/ 26 июля 2010

Я использую расширенную версию вышеуказанного скрипта, но на основе тех же принципов. Хотя на другом проекте все работает нормально, на этот раз мой скрипт не работает. Генерация 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. Я добавил разрывы строк в сообщение об ошибке для удобства чтения.

0 голосов
/ 29 апреля 2010

Итак, короче говоря, сценарий создает Doxy-файл на лету и не рекурсивно сканирует все подкаталоги.

Взгляните на этот пост:

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

Во втором посте есть сценарий, основанный на сценарии Apple, у которого не должно быть этой проблемы.

...