FindEigen3.cmake:

# - Try to find Eigen3 lib
# Once done this will define
#
# EIGEN3_FOUND - system has eigen lib
# EIGEN3_INCLUDE_DIR - the eigen include directory # Copyright (c) 2006, 2007 Montel Laurent, <montel@kde.org>
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file. if( EIGEN3_INCLUDE_DIR )
# in cache already
set( EIGEN3_FOUND TRUE )
else (EIGEN3_INCLUDE_DIR)
#这里的PATH_SUFFIXES表示附加的路径后缀,也就是后面 HINTS后面的路径结尾处
#都加上PATH_SUFFIXES 后面的东西,这里是都加上eigen3/
#比如/usr/loacal/include/eigen3/ 他们会在这些路径中找NAMES后面的Eigen/Core这个文件
#然后将这个文件的路径送到新建立的变量EIGEN3_INCLUDE_DIR中
#参考网址:http://www.cnblogs.com/coderfenghc/archive/2012/07/19/2599988.html
find_path( EIGEN3_INCLUDE_DIR NAMES Eigen/Core
PATH_SUFFIXES eigen3/
HINTS
${INCLUDE_INSTALL_DIR}
/usr/local/include
${KDE4_INCLUDE_DIR}
)
#这个include作用是找到FindPackageHandleStandardArgs.cmake文件(这个文件在CMake中的Modules文件夹),使得find_package_handle_standard_args()该函数可用。
#If a module file is specified, the include command will search the CMake module directory automatically. Just use:include(FindPackageHandleStandardArgs)
#参考网址:https://stackoverflow.com/questions/7005782/cmake-include-findpackagehandlestandardargs-cmake
include( FindPackageHandleStandardArgs ) #找Eigen3 这个安装包,在EIGEN3_INCLUDE_DIR 指示的路径中,或者后面添加的其他路径变量,如果能够找到
#那么EIGEN3_FOUND就会自动设置成true 表示找到了这个库 如果DEFAULT_MSG_EIGEN3这个可选的参数写上了,则会
#输出相应的成功找到或者失败找到的信息。
#参考网址:https://cmake.org/cmake/help/v3.0/module/FindPackageHandleStandardArgs.html
find_package_handle_standard_args( Eigen3 DEFAULT_MSG EIGEN3_INCLUDE_DIR ) #标记变量为高级,如果这个变量被设置成了高级或者非高级,则继续保持原来状态。
#参考:https://cmake.org/cmake/help/v3.0/command/mark_as_advanced.html
mark_as_advanced( EIGEN3_INCLUDE_DIR )
endif(EIGEN3_INCLUDE_DIR)

欢迎大家关注我的微信公众号「佛系师兄」,里面有关于 Ceres 以及 OpenCV 等更多技术文章。

比如

反复研究好几遍,我才发现关于 CMake 变量还可以这样理解!

更多好的文章会优先在里面不定期分享!打开微信客户端,扫描下方二维码即可关注!

最新文章

  1. Linux内核 TCP/IP、Socket参数调优
  2. WPS文字在表格中打字自动跳动
  3. 【EPplus】Column width discrepancy
  4. AutoCAD.NET 不使用P/Invoke方式调用acad.exe或accore.dll中的接口(如acedCommand、acedPostCommand等)
  5. 问题-Delphi控件选择卡自动选择与滚动方法
  6. js验证邮箱
  7. 从头开始-05.C语言中函数
  8. Android高效内存1:一张图片占用多少内存
  9. 利用Java泛型实现简单的泛型方法
  10. Bootstrap3 排版-标题
  11. Linux c codeblock的使用(三):使用函数库
  12. MySQL JDBC简单使用
  13. BootStrap常用组件及响应式开发
  14. Floyd-傻子也能看懂的弗洛伊德算法(转)
  15. sf2gis@163.com
  16. 小米 OJ 编程比赛 03 月常规赛
  17. 在使用Git提交代码的时候犯了个低级错误
  18. 深入了解MyBatis二级缓存
  19. 使用C#创建windows服务续之使用Topshelf优化Windows服务
  20. Oracle.DataAccess.Client.OracleConnection.Open()报错System. NullReferenceException

热门文章

  1. CAP 3.0 版本发布通告
  2. SpringBoot 总结篇
  3. jSignature签字板保存为图片
  4. js去除字符串的前后空白
  5. dp - 逆序数序列
  6. java 常用锁
  7. 安全检测检查清单(Web)网站
  8. Java入门 - 面向对象 - 02.重写与重载
  9. 正斜杠(&quot; / &quot;)和反斜杠(&quot; \ &quot;)的区别
  10. 大叔 Frameworks.Entity.Core 2 PageList