silvansky programming stuff

16Apr/100

qt, encoding, doxygen

столкнулся с проблемой: Qt Creator читает файлы только в системной кодировке. я сейчас под виндой, соответственно, системная кодировка windows-1251. проект планируется потом собирать и доделывать под линуксом. там, соответственно, системная кодировка (в убунте) UTF-8, следовательно кириллические символы (в комментах для doxygen'а) получаются мягко говоря нечитаемыми.

решал так:

в настройках проекта можно указывать кодировку. влияет это на файл projectname.pro.user:

<data>
<variable>defaultFileEncoding</variable>
<value type="QByteArray">UTF-8</value>
</data>

далее написал велосипед для конвертирования (удобного) файлов проекта в UTF-8 - и вот, всё хорошо.
главное - не конвертировать файлы .pro/.pri/.inc - это плохо скажется на сборке проекта. да.

перейдём к doxygen.

если есть класс, объявленный как

class SOME_EXPORT MyClass {...}

а макрос SOME_EXPORT выглядит так:

#define SOME_EXPORT __declspec(dllimport)

то doxygen сгенерирует что-то не удобоваримое, обойдя вниманием класс и создав документацию по макросу, как будто это нечто...

в общем, лечится установкой следующих флагов у докси:

ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
PREDEFINED = __declspec(x)=
EXPAND_AS_DEFINED = SOME_EXPORT

т.е., включаем препроцессинг, говорим, что макросы мы раскрываем, говорим, что раскрываем только макросы, перечисленные в PREDEFINED, в этот самый PREDEFINED пишем __declspec, а напоследок говорим, что макрос SOME_EXPORT мы будем раскрывать как он в коде написан.

красота! теперь докси генерит всё как надо.

UPD: Qt Creator почему-то не всегда сохраняет настройку кодировки для проекта. иногде приходится её ставить заново. интересно, почему? так же остаётся невыясненным как заставить криейтор читать ВСЕ файлы в utf-8. иначе выходит неудобно - если файл не включен в проект, то он интерпретируется как windows-1251.

2Apr/100

QtCreator Doxygen Plugin

плагин для QtCreator, обеспечивающий поддержку Doxygen.
два хоткея:
1. вставить doxy-style комменты к текущему объекту (Ctrl+Shift+F3)
2. сгенерить доки (должен стоять сам Doxygen) (Ctrl+Shift+F4)

http://dev.kofee.org/QtCreator-Doxygen/wiki/WikiStart

если собрать вручную, нужны исходники криейтора
если ставить под винду, можно скачать уже собранный плагин. только в Doxygen.pluginspec надо поменять 1.3.0 на текущую версию криейтора (у меня 1.3.1).