2010-03-31 3 views
4

Я пытаюсь использовать Doxygen с Xcode. Я последовал за Apple tutorial. После нескольких ошибок я построил проект и создал документы. Я обнаружил, что если вы сохраните doxygen.config из Doxygen и используете пробел «" в имени каталога, у вас будут проблемы и другие вещи.Как использовать Doxygen с Xcode?

Но есть одна последняя проблема:

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

Итак, короткая история о том, что скрипт создает Doxyfile «на лету», и он не рекурсивно сканирует все подкаталоги.

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

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

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

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.

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

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

1

Существует ошибка от генерации Nodes.xml от Doxygen. Он упоминается здесь 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 

NB: AWK и СЭД, конечно, может быть объединены в одну строку.

Смежные вопросы