返回信息流main.cpp里用到 #include<eigen3/Eigen/Core>,
eigen是用brew装的,
vim的ycm可以找到没有报错,
g++没有报错且编译后可运行,
cmake也没有报错,
但是make找不到这个头文件?
这是一条镜像帖。来源:北邮人论坛 / cpp / #100045同步于 2020/6/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
make求助
Vinci17
2020/6/8镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
谢谢回复,但是:
> make -I /usr/local/Cellar/eigen/3.3.7/include/
[ 50%] Building CXX object CMakeFiles/Transformation.dir/main.cpp.o
.../main.cpp:2:10: fatal error: 'eigen3/Eigen/Core' file not found
#include <eigen3/Eigen/Core>
^~~~~~~~~~~~~~~~~~~
1 error generated.
请问是哪里出错了么?
【 在 xxpxxxxp 的大作中提到: 】
: 加-I呗,指到brew formula里,多半是/usr/local/Cellar/eigen3/<version>/include
十分感谢,根据大家的帮助,最后修改了CMakeLists.txt里的include_directories,make成功了。
【 在 paper777 的大作中提到: 】
: Cmake里指一下include directory
我猜修改下CMake的环境变量说不定也能解决这个问题。
顺便建议楼主结合CMake和makefile的语法规则理解下C++编译的过程,各个阶段到底是干什么的,为什么需要头文件,链接期间到底在做什么之类的~
【 在 Vinci17 (vinci) 的大作中提到: 】
: main.cpp里用到 #include<eigen3/Eigen/Core>,
: eigen是用brew装的,
: vim的ycm可以找到没有报错,
: ...................
make找不到头文件肯定是路径问题。所以要么make -i指定头文件路径,要么把eigen/core加入到系统变量里,linux里这个变量是PATH
严格来说不对,PATH是可执行文件的环境变量。
LD_LIBRARY_PATH是. so的。
CPLUS_LIBRARY_PATH是. h的。
其实觉得-i指定或者修改环境变量都不太优雅,我们只需要在编译期用到的东西其实没必要修改会影响到运行期的变量,感觉最合理的其实就是修改楼上说的include_directories。
【 在 xiaowen10000 (醉意) 的大作中提到: 】
: make找不到头文件肯定是路径问题。所以要么make -i指定头文件路径,要么把eigen/core加入到系统变量里,linux里这个变量是PATH