这似乎是我问题的正确答案,但我认为这更像是我编写makefile的方式,因为我已经有了下面链接中描述的步骤(我知道如何构建东西)。
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>
所以这是makefile(我知道在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
有什么想法吗?
提前致谢!
答案 0 :(得分:5)
(注意,阅读评论以获得最终解决方案的要点。当我从问题的原始海报中澄清时,我会更新答案。)
有时这很明显,很容易错过。请检查您的用户是否具有/ usr / local / include / eigen2和/ usr / local / include / eigen2 / Eigen中所有文件和目录的读权限。还要仔细检查你包含在/ usr / local / include / eigen2 / Eigen中的文件。
其他:
听起来好像安装是直接部署到/ usr / include / eigen2和NOT / usr / include / Eigen,就像文档所假设的那样。这意味着教程所需的头文件位于/ usr / include / eigen2中。你的-I需要指向/usr/include/
(我认为这是GNU GCC中的默认值)。您的源代码不正确,应为#include <eigen2/Core>
和#include <eigen2/LU>
。在您的系统上安装了eigen的人改变了文档中指定的根目录的名称。
答案 1 :(得分:1)
您链接的问题有正确的答案。您只需使用正确的-I
标志指向Eigen标头。对于所有Eigen标题,您只需要一个-I
。