c ++包括我的makefile中的eigen

时间:2011-10-24 14:09:58

标签: c++ include makefile eigen

这似乎是我问题的正确答案,但我认为这更像是我编写makefile的方式,因为我已经有了下面链接中描述的步骤(我知道如何构建东西)。

How to write a makefile for a C++ project which uses Eigen, the C++ template library for linear algebra?

错误:

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

有什么想法吗?

提前致谢!

2 个答案:

答案 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