[ToolsChain] 关于cmake 编译时候编译器寻找路径问题,两种解决即使findpackage也提示找不到头文件或库的办法
2023-12-22 16:35:06
写在前面
自动安装了anaconda 之后 (以及使用源码编译安装,apt安装等不同方式)安装库,我编写cmakelist的时候会经常找不到一些已经确认安装好的库,如有此篇记录,防止corona后遗症。
outline
- 继续修改cmakelist
- 添加cmake编译路径
我的报错示例
我使用apt get方式安装的glog,
find了package 和add了头文件和库
依旧报相关错误,根本原因就是找不到对应的库导致的为定义符号问题。
修改cmakelist
既然我是aptget方式安装的,那么可以使用
dpkg-query -L libgoogle-glog-dev | grep libglog
找到头文件 和使用的库(比如我这里用来动态库so)
Set(GLOG_INCLUDE_DIRS "/usr/include/glog/")
Set(GLOG_LIBRARIES "/usr/lib/x86_64-linux-gnu/libglog.so")
重新编译问题解决
ps: 这里也看得出我问题之一就是有一个非常见的系统默认路径??所以自己设定了
修改cmake查找路径
这个我理解和visual studio; matlab的设置大同小异
比如方法find package没有找的原因就是搜索路径下没有,如此加上去就好了。
两种方式,一种是只针对本项目,一种是全局的设置。见下:(注意是修改和expand两种)
cmake -DCMAKE_PREFIX_PATH="/usr/include/glog/:/usr/lib/x86_64-linux-gnu/"
运行cmake命令时临时生效,不会影响到其他CMake配置
export CMAKE_PREFIX_PATH="/usr/include/glog/:/usr/lib/x86_64-linux-gnu/"
shell中执行这个export命令后,所有后续的cmake命令都会考虑到这个环境变量的值(我理解是本shell 懒得实验了)
export CMAKE_PREFIX_PATH="/usr/include/glog/:/usr/lib/x86_64-linux-gnu/:$CMAKE_PREFIX_PATH"
这个是全局修改的expand模式(不删除)
网上还看到一种方式,可以针对一个cmakelist单独设置一个路径,也就是写在cmakelist里
set(CMAKE_PREFIX_PATH "/path/to/package-config-file-directory" ${CMAKE_PREFIX_PATH})
感觉人类发明的东西还挺灵活的
文章来源:https://blog.csdn.net/weixin_46479223/article/details/135153942
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!