Tsathoggua
Tsathoggua

Reputation: 819

Why doesn't doxygen find my files

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.

Upvotes: 0

Views: 2281

Answers (1)

Cimbali
Cimbali

Reputation: 11405

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.

Upvotes: 1

Related Questions