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

Reply via email to