5

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

如何为使用 Eigen(线性代数的 C++ 模板库)的 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>

所以这里是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

有什么想法吗?

提前致谢!

4

2 回答 2

5

(注意,阅读评论以获得最终解决方案的要点。当我从问题的原始海报中得到澄清时,我会更新答案。)

有时它是显而易见的,很容易错过。请检查您的用户是否对 /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>and #include <eigen2/LU>。在您的系统上安装 eigen 的人更改了文档中指定的根目录的名称。

于 2011-10-24T15:36:35.750 回答
1

您链接到的问题有正确的答案。您只需要使用正确的-I标志来指向 Eigen 标头。-I对于所有 Eigen 标头,您应该只需要一个。

于 2011-10-24T15:17:46.977 回答