Je rencontre un problème concernant la bibliothèque appelée JSBSim. La bibliothèque elle-même n'est pas si pertinente, mais les problèmes entourent plusieurs cas de dépendance cyclique dans les fichiers d'en-tête.Les en-têtes de la bibliothèque compilée ne peuvent pas se rejoindre
Contexte info:
Exécution CentOS 7 64 bits - bibliothèques sont liées statiquement avec en-têtes situés dans usr/local/include et correspondant .a et .la dans usr/local/lib
La structure du répertoire pour/usr/local/include/JSBSim est comme suit:
initialization
input_output
math
models
simgear
FGFDMExec.h
FGJSBBase.h
Je suis en un Makefile avec le contenu suivant:
all:
g++ *.cpp -lJSBSim -o output
clean:
/bin/rm -f output
J'écris une enveloppe pour le JSBSim avec le squelette de base suivant:
#include <JSBSim/FGFDMExec.h>
class JsbSimWrapper
{
};
-je obtenir l'erreur suivante lorsque je lance le makefile:
compilation terminated.
In file included from /usr/local/include/JSBSim/FGFDMExec.h:47:0,
from JsbSimWrapper.hpp:7,
from main.cpp:1:
/usr/local/include/JSBSim/initialization/FGTrim.h:53:23: fatal error: FGFDMExec.h: No such file or directory
#include "FGFDMExec.h"
^
compilation terminated.
make: *** [all] Error 1
Les erreurs ne viennent pas de la classe elle-même; plutôt l'inclusion du fichier d'en-tête principal de la bibliothèque. Je l'ai fait quelques recherches, et le fichier FGTrim.h est situé dans l'initialisation, et FGTrim de comprendre: de
#include "FGFDMExec.h"
Il semble que FGTrim ne peut pas voir FGFDMExec.h parce qu'il est un répertoire vers le bas, mais FGFDMExec.h peux voir FGTrim très bien parce que FGFDMExec.h les éléments suivants sont les suivantes:
#include "initialization/FGTrim.h"
est-il un moyen de contourner ce problème? Je ne veux vraiment pas avoir à réorganiser la structure d'en-tête ou réécrire les en-têtes et recompiler la bibliothèque si je n'ai pas à le faire.
Merci!
Ajoutez '-I/usr/local/include/JSBSim/initialization' à' CXXFLAGS' dans votre fichier makefile. –
^Pour votre appel de compilateur respectivement. –
Je viens d'essayer, malheureusement sans succès. – Peter