如何在CMake中包含Eigen所依赖的文件?

时间:2014-11-11 16:16:25

标签: include cmake eigen

我正在研究从互联网上下载的C项目。 我试图添加一些函数,其中Eigen将用于线性代数。

为此,我将以下行添加到CMakeLists.txt:

PKG_CHECK_MODULES(EIGEN3 REQUIRED eigen3)
INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIRS})
LINK_DIRECTORIES(${EIGEN3_LIBRARY_DIRS})
ADD_EXECUTABLE(main main.c)
TARGET_LINK_LIBRARIES(main ${EIGEN3_LIBRARIES})

运行cmake时没有错误。然后制作

问题是当我尝试在其中一个c函数中包含<Eigen/Dense>时,我在尝试制作时遇到以下错误:

/usr/include/eigen3/Eigen/Core:28:19: fatal error: complex: No such file or directory  #include <complex>

Eigen/Dense包括Eigen/CoreEigen/Core包括<complex> 我认为只是找不到正确的目录来查找complex ...如何让它看起来那样?

1 个答案:

答案 0 :(得分:1)

C ++库中的Eigen,而您的应用程序源是C文件(main.c)。由于它具有.c扩展名,因此CMake将其威胁为C源并使用C编译器,后者不了解C ++标准库(<complex>)。将main.c重命名为main.cpp