I do not get the doxygen preprocessor to recursively include files. How to do this?
I made up an example consisting of two headers and a Doxygen file:
subdir/example.h
subdir2/example_include.h
Doxygen
This is the listing of example.h
:
#include "example_include.h"
typedef struct
{
float array[ARRAY_LENGTH * 2 - 1];
#if CONDITION == MY_FALSE
char optional_char;
#endif
} ExampleType;
This is the listing of example_include.h
:
#define MY_FALSE (0u)
#define MY_TRUE (1u)
#define CONDITION MY_TRUE
#define ARRAY_LENGTH (20u)
My changes with regard to the default Doxygen configuration file (using Doxygen 1.8.2) are:
INPUT = .
RECURSIVE = YES
GENERATE_XML = YES
MACRO_EXPANSION = YES
INCLUDE_PATH = .
The output XML of Doxygen for ExampleType
(file: xml/struct_example_type.xml
) is:
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.2">
<compounddef id="struct_example_type" kind="struct" prot="public">
<compoundname>ExampleType</compoundname>
<sectiondef kind="public-attrib">
<memberdef kind="variable" id="struct_example_type_1aa7b8f391fc62f93c34c2b305542db339" prot="public" static="no" mutable="no">
<type>float</type>
<definition>float ExampleType::array[ARRAY_LENGTH *2-1]</definition>
<argsstring>[ARRAY_LENGTH *2-1]</argsstring>
<name>array</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="D:/Sandboxes/ALN_Alignment_SRR295/04_Engineering/01_Source_Code/algo/exmaple/subdir/example.h" line="5" bodyfile="D:/Sandboxes/ALN_Alignment_SRR295/04_Engineering/01_Source_Code/algo/exmaple/subdir/example.h" bodystart="5" bodyend="-1"/>
</memberdef>
<memberdef kind="variable" id="struct_example_type_1a8428371f21c1fb8fd28cb1062c7b1152" prot="public" static="no" mutable="no">
<type>char</type>
<definition>char ExampleType::optional_char</definition>
<argsstring></argsstring>
<name>optional_char</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="D:/Sandboxes/ALN_Alignment_SRR295/04_Engineering/01_Source_Code/algo/exmaple/subdir/example.h" line="7" bodyfile="D:/Sandboxes/ALN_Alignment_SRR295/04_Engineering/01_Source_Code/algo/exmaple/subdir/example.h" bodystart="7" bodyend="-1"/>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="D:/Sandboxes/ALN_Alignment_SRR295/04_Engineering/01_Source_Code/algo/exmaple/subdir/example.h" line="4" bodyfile="D:/Sandboxes/ALN_Alignment_SRR295/04_Engineering/01_Source_Code/algo/exmaple/subdir/example.h" bodystart="3" bodyend="9"/>
<listofallmembers>
<member refid="struct_example_type_1aa7b8f391fc62f93c34c2b305542db339" prot="public" virt="non-virtual"><scope>ExampleType</scope><name>array</name></member>
<member refid="struct_example_type_1a8428371f21c1fb8fd28cb1062c7b1152" prot="public" virt="non-virtual"><scope>ExampleType</scope><name>optional_char</name></member>
</listofallmembers>
</compounddef>
</doxygen>
Actually, I would expect ARRAY_LENGTH
to be replaced by (20u)
and optional_char
should not be a member of the struct.
It seems my question is related to this, however the only promising answer is the comment by @Phineas saying it was an issue that has been fixed in doxygen version 1.7.4. However, I still see the same behavior. What to do about this?
Btw - the "usecase" is simple: It's a visual studio project. The compiler includes all files as desired, as they are all contained in the project defintion.
Have you set RECURSIVE to YES?
# The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES
it's in the
Doxyfile
source
And to be clear, the default value is NO.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With