Doxygen с * .in файлом - PullRequest
       35

Doxygen с * .in файлом

0 голосов
/ 14 сентября 2018

Я генерирую функции с * .in файлами

   class Foo
   {
   public:
   ...

      #define FUNCTION(returnType, getterName) \
         returnType getterName(uint8_t iValue) const;
      #include "Functions.in"
      #undef FUNCTION

   ...
   };

и хочу использовать Doxygen.Конфигурация Doxygen выглядит следующим образом:

...
INPUT                  = Path/To/Foo
...
FILE_PATTERNS          = *.in \
                         *.c \
                         *.cc \
                         *.cxx \
                         *.cpp \
                         *.c++ 
...
SEARCH_INCLUDES        = YES
...
INCLUDE_PATH           = Path/To/Foo
...

Я вижу файлы * .in в документации, но не функции в классе.Кроме того, Doxygen создает следующее предупреждение

Foo.h:10: warning: include file Functions.in not found, perhaps you forgot to add its directory to INCLUDE_PATH?

Кто-нибудь знает, как использовать Doxygen с файлами * .in?Реально ли использовать Doxygen с генерируемым кодом?

1 Ответ

0 голосов
/ 14 сентября 2018

Если вы прочитаете документацию по предварительной обработке Doxygen , вы увидите, что

Исходные файлы, которые используются в качестве входных данных для doxygen, могут быть проанализированы встроенным C-препроцессором doxygen.

И

По умолчанию doxygen выполняет только частичную предварительную обработку.То есть он оценивает операторы условной компиляции (например, #if) и оценивает определения макросов, но не выполняет раскрытие макросов.

Это поведение по умолчанию можно изменить:

Если вы хотите развернуть макрос CONST_STRING, вы должны установить тег MACRO_EXPANSION в файле конфигурации на YES.

Таким образом, решение заключается в том, чтобы не запустить файлы *.in через Doxygen, но вместо этого установить переменную конфигурации MACRO_EXPANSION в YES, и макросы будут полностью раскрыты, а их расширения должны быть проанализированы.

...