0
votes

I have a huge code for which the documentation is generated with doxygen.

In my doxygen configuration file I have

INPUT                  = ../../src/Fibers \
                         ../../src/SolveursContact/solverAC2
##                       plus some other path
RECURSIVE              = YES

and the EXCLUDE tag exclude some directories, but not those that matter for this question.

Then, when I run doxygen, I get the following warnings (not complete list)

path/to/src/Fibers/Rendering/Hair/Rendering/Scattering/model.h:4: warning: include file math.h not found, perhaps you forgot to add its directory to INCLUDE_PATH?
path/to/src/Fibers/Rendering/Hair/Rendering/Scattering/model.h:5: warning: include file iostream not found, perhaps you forgot to add its directory to INCLUDE_PATH?
path/to/src/Fibers/Simulation/Configuration.hpp:205: warning: include file ConfigurationParams.def.h not found, perhaps you forgot to add its directory to INCLUDE_PATH?
path/to/src/Fibers/Simulation/SolverManager.cpp:315: warning: include file AC2MecheSolvers.def.h not found, perhaps you forgot to add its directory to INCLUDE_PATH?

(My path are quite long but they are all correct.)

First point is I am obviously not expecting doxygen to include any documentation for math.h or iostream and some other files include iostream without this warning. So why do I have this warning here?

Second point, my files ConfigurationParams.def.h and AC2MecheSolvers.def.h are actually found at some point by doxygen since I have checked the html documentation page for each of them. So why are they not linked here?

Path for my problem files are

path/to/src/SolveursContact/solverAC2/src/AC2MecheSolvers.def.h
path/to/src/Fibers/Parameters/ConfigurationParams.def.h

model.h

1  #ifndef MODEL_MECHE_H
2  #define MODEL_MECHE_H
3
4  #include <math.h>
5  #include <iostream>

Configuration.hpp

200  #define EXPAND_CONF_PRMWO(n, t, d) \
201      t n ;
202  #define EXPAND_CONF_PARAM(n, t, I, d) \
203      t n ;\
204      t n##SI ;
205  #include "ConfigurationParams.def.h"

SolverManager.cpp

310  #ifdef SOLVER_AC2
311  #define EXPAND_MECHE_SOLVER(n, g, l) \
312      case Configuration::SOLVER_FUNC_##g##_##l : \
313                            res = ac2Solver->solve(g, (LocalSolver) l) ; \
314      break ;
315  #include "AC2MecheSolvers.def.h"

EDIT: Doxygen version is 1.8.11.

1
Which version of doxygen? Do you see in the beginning something about Parsing file .... path/to/src/Fibers/Parameters/ConfigurationParams.def.h? Does this happen only to files with double extensions (.def.h)? Did you exclude / not include in FILE_PATTERNS ? - albert
@albert It does not only happen with double extension files as it also happen for math.h and iostream. For my files, it only happen for those two files, which indeed are the only one with double extension. Those files are included within the file pattern, as all headers are (*.h), but not as *.def.h. Thing is, the documentation page for those two file is generated, I have the corresponding html pages. - Tsathoggua
I think you might be able to get rid of the remarks about iostream an math.h by using INCLUDE_PATH setting. I think the same might be true for the *.def.h files. Please also see what happens with the current version (1.8.13). - albert
This solved the problem for my *.def.h files but not for cmath and iostream. Doxygen then tries to generate some documentation for cmath and iostream. Anyway, this is a minor problem and I have some more urgent matters so I will think about it latter. Thanks a lot for your help. - Tsathoggua

1 Answers

1
votes

I've had this problem (with doxygen 1.8.14) when the standard header was included from inside a namespace:

namespace ns {
#include <iostream>
// more stuff
}

This can also happen indirectly:

// header file
#include <iostream>
// implementation file
namespace ns {
#include "header.h"
// more stuff
}

The solution is then of course to include standard headers outside any namespaces.