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 变量还可以这样理解!

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

Sopus库中FindEigen3.cmake内容详解笔记的更多相关文章

  1. Sophus库CMakeLists.txt内容详解笔记

    CMakeLists.txt: SET(PROJECT_NAME Sophus) PROJECT(${PROJECT_NAME}) CMAKE_MINIMUM_REQUIRED(VERSION 2.6 ...

  2. Php-SPL库中的迭代器类详解(转)

    SPL提供了多个迭代器类,分别提供了迭代访问.过滤数据.缓存结果.控制分页等功能.,因为php总是在不断壮大,我尽可能列出SPL中所有的迭代类.下面其中一些迭代器类是需要php5.4,另外一些如Sea ...

  3. CMake 手册详解(二十)

    SirDigit CMake 手册详解(二十) CMD#51: list 列表操作命令. list(LENGTH <list> <output variable>) list( ...

  4. PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等

    页面导航: 首页 → 网络编程 → PHP编程 → php技巧 → 正文内容 PHP安全 PHP开发中常见的安全问题详解和解决方法(如Sql注入.CSRF.Xss.CC等) 作者: 字体:[增加 减小 ...

  5. Asp.net中web.config配置文件详解(一)

    本文摘自Asp.net中web.config配置文件详解 web.config是一个XML文件,用来储存Asp.NET Web应用程序的配置信息,包括数据库连接字符.身份安全验证等,可以出现在Asp. ...

  6. vue-cli 中的 webpack 配置详解

    本篇文章主要介绍了 vue-cli 2.8.2 中的 webpack 配置详解, 做个学习笔记 版本 vue-cli 2.8.1 (终端通过 vue -V 可查看) vue 2.2.2 webpack ...

  7. C#中web.config文件详解

    C#中web.config文件详解 一.认识Web.config文件 Web.config 文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NE ...

  8. gvoory脚本中关于HttpClient使用详解实例

    一.gvoory脚本中关于HttpClient使用详解实例 HttpClient:是一个接口 首先需要先创建一个DefaultHttpClient的实例 HttpClient httpClient=n ...

  9. c++中vector的用法详解

    c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...

随机推荐

  1. leetcode.310最小高度树

    对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树.给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点. ...

  2. docker概述和基本命令

    命名空间 Docker使用一种称为namespaces提供隔离工作空间的技术来称为容器.当您运行容器时,Docker会为该容器创建一组 名称空间. 这些命名空间提供了一层隔离.容器的每个方面都在一个单 ...

  3. 用 Serverless 快速搭建个人相册网站

    日常生活中我们经常会拍摄一些视频.照片等,这些文件会占用比较多的存储空间.本文将介绍一种方法:利用 ThumbsUp 工具,结合 Serverless Framework 的 component 快速 ...

  4. C# 数独求解算法。

    前言 数独是一种有趣的智力游戏,但是部分高难度数独在求解过程中经常出现大量单元格有多个候选数字可以填入,不得不尝试填写某个数字然后继续推导的方法.不幸的是这种方法经常出现填到一半才发现有单元格无数可填 ...

  5. 应届生/社招面试最爱问的几道Java基础问题

    本文已经收录自笔者开源的 JavaGuide: https://github.com/Snailclimb ([Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识)如果觉得不错 ...

  6. Eclipse直接运行算法第4版例子(重定向和读取指定路径文件)

    Eclipse直接运行算法第4版例子(重定向和读取指定路径文件)   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://b ...

  7. sparkstreaming消费kafka后bulk到es

    不使用es-hadoop的saveToES,与scala版本冲突问题太多.不使用bulkprocessor,异步提交,es容易oom,速度反而不快.使用BulkRequestBuilder同步提交. ...

  8. Java 基础(二)| 使用 lambad 表达式的正确姿势

    前言 为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握 lambda 表达式,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 ...

  9. 原生JS在网页上复制的所有文字后面自动加上一段版权声明

    不少技术博客有这样的处理,当我们复制代码的时候,会自动加上一段本信息版权为XXXX,这是怎么实现的呢? 其实实现的方式很简单,可以在我的网站页面上绑定一个copy事件,当你复制文章内容的时候,自动在剪 ...

  10. java反序列化php序列化的对象

    最近工作中遇到一个需要解析php序列化后存入DB的array, a:4:{i:0;a:2:{s:11:"province";s:8:"0016";s:7:&qu ...