c ++, включая eigen в моем make-файле - PullRequest
5 голосов
/ 24 октября 2011

Похоже, это правильный ответ на мою проблему, однако я думаю, что это больше похоже на то, как я пишу свой make-файл, так как у меня уже есть шаги, описанные в ссылке ниже (я знаю, как создавать вещи).

Как написать make-файл для проекта C ++, который использует Eigen, библиотеку шаблонов C ++ для линейной алгебры?

Ошибка:

SASAGeometry.h:6:22: error: Eigen/Core: No such file or directory 
SASAGeometry.h:7:20: error: Eigen/LU: No such file or directory

Проблемные строки в моем заголовочном файле просто:

#include <Eigen/Core>
#include <Eigen/LU>

Итак, вот make-файл (я знаю, что он находится в строке INCLUDE):

CC = g++
BIN = .

INCLUDE = -I/usr/local/include/eigen2/ -I. -I/usr/local/include/eigen2/Eigen/ -I/home/mark/Applications/eigen/Eigen/src/ -I /usr/local/include

CFLAGS = -pipe

LFLAGS = -lm

GeomTest_OBJS = geomTest.o SASAGeometry.o

geomTest_source = SASAGeometry.cpp SASAGeometry.h sasa_transformMatrix.cpp sasa_transformMatrix.h geomSetup.cpp


geomTest    : $(GeomTest_OBJS) makefile
            $(CC) -o geomTest.o -o SASAGeometry.o $(LIBS) $(INCLUDE) $(CFLAGS) $(geomTest_source) $(LFLAGS)
            $(CC) $(LIBS) $(INCLUDE) $(CFLAGS) -o $(BIN)/geomTest geomTest.o SASAGeometry.o $(LFLAGS)

clean       : \rm *.o *~ p1

есть мысли?

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 24 октября 2011

(Обратите внимание, прочитайте комментарии, чтобы получить суть окончательного решения. Я обновлю ответ, когда получу разъяснения от первоначального автора вопроса).

Иногда это очевидное, что легкоМисс.Убедитесь, что у вашего пользователя есть права на чтение для всех файлов и каталогов в / usr / local / include / eigen2 и / usr / local / include / eigen2 / Eigen.Также проверьте, что файлы, которые вы включаете, действительно существуют в /usr/local/include/eigen2/Eigen.

Дополнительно: похоже, что установка была развернута непосредственно в / usr / include / eigen2 и НЕ / usr /include / Eigen, как предполагается в документации.Это означает, что заголовочные файлы, которые нужны учебникам, находятся в / usr / include / eigen2.Ваш -I должен указывать на /usr/include/ (я думаю, что по умолчанию в GNU GCC).Ваш исходный код неверен, это должны быть #include <eigen2/Core> и #include <eigen2/LU>.Кто бы ни установил eigen в вашей системе, он изменил имя корневого каталога, указанного в документации.

1 голос
/ 24 октября 2011

Правильный ответ на вопрос, на который вы ссылаетесь.Вам просто нужно использовать правильный флаг -I, чтобы указать на собственные заголовки.Вам нужен только один -I для всех заголовков Eigen.

...