2012-12-05 94 views
4

我沒有得到doxygen預處理器遞歸包含文件。這個怎麼做?如何使doxygen預處理器遞歸到子目錄中?

我提出了由兩個標頭的一個例子,一個Doxygen的文件:

subdir/example.h 
subdir2/example_include.h 
Doxygen 

這是example.h的列表:

#include "example_include.h" 

typedef struct 
{ 
    float array[ARRAY_LENGTH * 2 - 1]; 
#if CONDITION == MY_FALSE 
    char  optional_char; 
#endif 
} ExampleType; 

這是example_include.h的列表:

#define MY_FALSE   (0u) 
#define MY_TRUE    (1u) 
#define CONDITION  MY_TRUE 
#define ARRAY_LENGTH (20u) 

我對默認Doxygen配置的更改文件(使用Doxygen的1.8.2)是:

INPUT     = . 
RECURSIVE    = YES 
GENERATE_XML   = YES 
MACRO_EXPANSION  = YES 
INCLUDE_PATH   = . 

的Doxygen爲ExampleType(文件:xml/struct_example_type.xml)輸出XML是:

<?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> 

其實,我希望ARRAY_LENGTH(20u)和替代optional_char不應該是結構的成員。

看來我的問題與this有關,但唯一有希望的答案是@Phineas的評論說這是一個在doxygen 1.7.4版中已修復的問題。不過,我仍然看到相同的行爲。該怎麼辦?

順便說一句 - 「usecase」很簡單:它是一個視覺工作室項目。編譯器根據需要包含所有文件,因爲它們都包含在項目定義中。

回答

3

您是否將RECURSIVE設置爲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 

它在Doxyfile

source

+0

是。我在我的問題中記錄了對Doxyfile的更改,「RECURSIVE = YES」就是其中之一。 –