C и doxygen - удаление дубликатов переменной документации
Я документирую свой код C с помощью Doxygen. Для лучшей читаемости я группирую документацию каждой пары файлов.c/.h (иногда также больше файлов) с defgroup
а также addtogroup
(см. doxygen в c: группировка определений). Страницы файла выглядят хорошо, но на страницах групп / модулей вся переменная документация удваивается. Есть 2 записи для каждой переменной, которая объявлена (с extern) в заголовочном файле и определена в файле.c (в сводке, а также в части описания). Функции и все остальное указано только один раз...
Как избавиться от дублирующей документации переменных на страницах групп / модулей?
Мои исходные файлы выглядят так:.h file:
/** @file
* blabla
* @author bla
*/
/// @addtogroup MY_GRP
/// @{
#define SOMEDEF1 1
/// @name Special defs
/// @{
#define SOMEDEF2 2
/// @}
enum someenum {
foo,
bar
};
extern int some_variables;
extern void some_proc(int baz);
/// @}
.c файл:
/** @file
* blabla
* @author bla
*/
/** @defgroup MY_GRP A test group.
* Description
*/
/// @{
#include "my.h"
/// Important variable.
int some_variable;
/** Important proc
* Description
* @param baz need this
*/
void some_proc(int baz) {
// code
}
/// @}
1 ответ
Не могу действительно решить проблему, но нашел мне обходной путь: я использую INPUT_FILTER
вариант с grep -Eve "extern"
(cygwin) для сортировки всех строк с "extern" функциями или объявлениями переменных. Так как я документирую только фактические реализации функций и определения переменных, все, с "extern" перед ним, в любом случае не имеет документации и может быть удалено для doxygen. Это действительно также удаляет все повторяющиеся записи для переменных в выводе doxygen.
Вместо того, чтобы использовать INPUT_FILTER
значение конфигурации с sed
или grep
(которая отлично работает в Linux, в Windows для этого требуется Cygwin или MSYS2, и он медленнее...), в настоящее время я использую следующий прием:
- Установлен
PREDEFINED = extern=//
- Установлен
EXPAND_AS_DEFINED = extern
Таким образом, любая строка, начинающаяся с extern
отключен с помощью комментария C++.