Hi Dimitri, Thanks for your response. I added the -d Preprocessor option, and captured the output to a file (our project is very large), and noticed this interesting phenomenon:
Early in the output, I see this message when preprocessing some files: #include object.h: not found! skipping... then later on, I see this message when preprocessing other files: #include object.h: already included! skipping... As you might surmise, "object.h" is where the troublesome macros are defined. It seems like doxygen's ability to locate header files is affected by the order in which files are discovered during the "Searching for files in directory..." stage of a recursive operation. Another case in point, many header files live in an "include/" directory, and doxygen can't find them when preprocessing files it found in directories that come before "include/". Do I need to mention these directories in INCLUDE_PATH? I was of the impression that INCLUDE_PATH was only for paths that were otherwise not found during recursion. For example, I exclude "*/drivers/*" but INCLUDE_PATH has "drivers/common/" because there are some important macros in a header file there, but overall I don't want docs for the files in "drivers/" I will try to create a small contrived example soon. Thanks, ~Brian -----Original Message----- From: Dimitri van Heesch [mailto:doxy...@gmail.com] Sent: Friday, May 10, 2013 7:32 AM To: Brian Henning Cc: doxygen-users@lists.sourceforge.net Subject: Re: [Doxygen-users] Doxygen 1.8.3.1 not expanding macros?... Hi Brian, On May 8, 2013, at 22:26 , Brian Henning <bhenn...@pineinst.com> wrote: > Hi, > > In trying to resolve a problem I was having where Doxygen would not generate > any callgraph info for global functions, I updated from 1.6.3 to 1.8.3.1. > > In our project, we have some classes that inherit from a common base class, > and use macros to declare the commonly-overridden methods. Using the > following set of preprocessor options with 1.6.3 worked exactly as I > expected, but does not work (i.e. macros are not expanded) in 1.8.3.1: > > ENABLE_PREPROCESSING = YES > MACRO_EXPANSION = YES > EXPAND_ONLY_PREDEF = YES > SEARCH_INCLUDES = YES > INCLUDE_PATH = drivers/common/ > INCLUDE_FILE_PATTERNS = > PREDEFINED = _REDACTED_1_ _REDACTED_2_ _REDACTED_3_ > EXPAND_AS_DEFINED = IMPLEMENT_OBJECT_COMMON_METHODS > IMPLEMENT_OBJECT_STATIC_METHODS > EXPAND_AS_DEFINED += IMPLEMENT_OBJECT_COPYING_METHODS > DECLARE_OBJECT_SERIALIZER_METHODS > EXPAND_AS_DEFINED += IMPLEMENT_STATIC_CREATE > IMPLEMENT_OBJECT_COPYING_METHODS_ABSTRACT > EXPAND_AS_DEFINED += IMPLEMENT_SELF_REPLICATE > SKIP_FUNCTION_MACROS = NO > > After running Doxygen 1.8.3.1 with a config file including the above > settings, I see "IMPLEMENT_OBJECT_COMMON_METHODS" documented as a member > property of various classes instead of being expanded to a set of method > declarations (which it was doing properly in 1.6.3). > > Any help? Most likely doxygen did't find the definitions of the macros (you can run doxygen with the "-d Preprocessor" option to see the output after preprocessing). I couldn't reproduce the problem based on your input. Can you make a self-contained example that shows the problem? Regards, Dimitri ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. This 200-page book is written by three acclaimed leaders in the field. The early access version is available now. Download your free book today! http://p.sf.net/sfu/neotech_d2d_may _______________________________________________ Doxygen-users mailing list Doxygen-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/doxygen-users