camke填坑

博主在尝试使用CMake时遇到了各种问题,包括大小写的困扰、头文件的定位以及编译错误的解析困难。通过`find_package`命令的模块模式和配置模式探讨了寻找库的方法,并强调了在自定义模块路径时确保`findXXX.cmake`文件存在的关键性。尽管耗费了一下午的时间,但问题仍未解决。
摘要由CSDN通过智能技术生成

学习camke就是,跟着教程写觉得,恩,没毛病,代码简单,思路清晰,总共就那么几个命令,so easy!然而!一到自己来写就是,哪哪都是毛病!大小写都能纠结个把小时!面对那些头文件,就是一种我找得到你,却调不到你呢无奈…重点是,编译时报的错,我是看不懂的…百度也很难百度到同样的错…谨以此篇博客,献给被cmake折磨一下午的我。重点是一下午过去,中饭都没吃的我,依旧没把它搞懂…[哭]
1.find_package
find_package,顾名思义,是用来找包的,但是并不是哪的包都能找
模块模式
搜索CMAKE_MODULE_PATH指定路径下的FindXXX.cmake文件,执行该文件从而找到XXX库。其中,具体查找库并给XXX_INCLUDE_DIRS和XXX_LIBRARIES两个变量赋值的操作由FindXXX.cmake模块完成。

LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)
//把 ${PROJECT_SOURCE_DIR}/cmake_modules添加到CMAKE_MODULE_PATH
//不要问我CMAKE_MODULE_PATH的默认路径是啥 我也不知道

如果在上面的路径中没有找到FindXXX.cmake文件,它会在这个路径下 <CMAKE_ROOT>/share/cmake-x.y/Modules/(对于我的,路径就是/usr/share/cmake-3.5/Modules)搜索FindXXX.cmake,可以通过命令 cmake --help-module-list 得到你的CMake支持的模块的列表。

重点:如果使用LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)命令,一定记得把findXXX.cmake文件拷贝到当前的cmake_modules文件夹下,一般库的findXXX.cmake文件就在它的源码里,例如g2
o的文件路径为:g2o/cmake_modules文件夹下。

配置模式
如果没找到这样的文件,find_package()会在~/.cmake/packages/或/usr/local/share/中的各个包目录中查找,寻找<库名字的大写>Config.cmake 或者 <库名字的小写>-config.cmake (比如库Opencv,它会查找/usr/local/share/OpenCV中的OpenCVConfig.cmake或opencv-config.cmake),但是用这种方法根本找不到ceres的findCeres.camke文件,玄学…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值