Mar*_*kJL 5 c++ makefile include eigen
这似乎是我问题的正确答案,但我认为这更像是我编写makefile的方式,因为我已经有了下面链接中描述的步骤(我知道如何构建东西).
如何为使用线性代数的C++模板库Eigen编写C++项目的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
Run Code Online (Sandbox Code Playgroud)
我的头文件中有问题的行只是:
#include <Eigen/Core>
#include <Eigen/LU>
Run Code Online (Sandbox Code Playgroud)
所以这是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
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
提前致谢!
(注意,阅读评论以获得最终解决方案的要点.当我从问题的原始海报中澄清时,我会更新答案.)
有时它很明显,容易错过.请检查您的用户是否具有/ 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的人更改了文档中指定的根目录的名称.