У меня возникла проблема с библиотекой под названием JSBSim. Сама библиотека не так актуальна, но проблемы связаны с несколькими случаями циклической зависимости в файлах заголовков.Заголовки сборных библиотек, не имеющие возможности достигать друг друга
Справочная информация:
Запуск CentOS 7 64 бит - библиотеки статически связаны с заголовками, расположенных в USR/местные/включают в себя и соответствующие .a и .la в USR/структуры локального/Библиотека
директории для/USR/местные/включить/JSBSim нижеследовал:
initialization
input_output
math
models
simgear
FGFDMExec.h
FGJSBBase.h
Я бегу Makefile со следующим содержимым:
all:
g++ *.cpp -lJSBSim -o output
clean:
/bin/rm -f output
Я пишу оболочку для JSBSim с основным следующим скелетом:
#include <JSBSim/FGFDMExec.h>
class JsbSimWrapper
{
};
я получаю следующее сообщение об ошибке при запуске 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
Ошибка не происходит из сам класс; скорее, включение главного файла заголовка библиотеки. Я сделал некоторые исследования, и файл FGTrim.h находится в инициализации, и в FGTrim включим'S:
#include "FGFDMExec.h"
Похоже FGTrim не может видеть FGFDMExec.h, потому что это вниз каталог, но FGFDMExec.h может см FGTrim просто отлично, потому что в FGFDMExec.h имеет следующие включают:
#include "initialization/FGTrim.h"
есть ли способ обойти это? Я действительно не хочу, чтобы реорганизовать структуру заголовка или переписать заголовки и перекомпилировать библиотеку, если мне это не нужно.
Спасибо!
Добавить '-I/usr/local/include/JSBSim/initialization' в' CXXFLAGS' в вашем файле makefile. –
^К вашему компилятору, соответственно. –
Я просто пробовал это, к сожалению, без успеха. – Peter