В то время, когда я пишу, doxygen будет выполнять полноценное включение файла, если выполняется пара условий.Из документации по внутренним документам doxygen :
... препроцессор анализирует, но фактически не включает код, когда встречается с #include (за исключением найденного #includeвнутри {...} блоков)
Другое недокументированное, но интуитивное предварительное условие, которое я обнаружил в ходе экспериментов, заключается в том, что любой {...} блок, в котором находится #include, должен сам по себе бытьдокументированы.Например, при запуске doxygen в следующем тестовом файле с использованием Boost.Preprocessor будут сгенерированы записи для структур FOO::A
, FOO::B
и FOO::C
, при условии, что в файле конфигурации включен MACRO_EXPANSION
,желаемый режим извлечения установлен на «Все сущности», а папка надстройки правильно установлена в INCLUDE_PATH
:
#include <boost/preprocessor/iteration/local.hpp>
#include <boost/preprocessor/tuple/elem.hpp>
#define STRUCTS (A, B, C)
namespace FOO {
#define BOOST_PP_LOCAL_MACRO(n) struct BOOST_PP_TUPLE_ELEM(3,n, STRUCTS) {};
#define BOOST_PP_LOCAL_LIMITS (0,2)
#include BOOST_PP_LOCAL_ITERATE()
}
Однако удаление FOO
для размещения структур в анонимном пространстве имен приведет кнет документацииТак что, если вы можете вынести #include "generator.h"
в явном пространстве имен, оно будет работать.