当前位置: 首页 > news >正文

常用CMake指令

常用CMake指令

笔记来自《视觉惯性SLAM:理论与源码解析》

指定要求最小的CMake版本,如果版本小于该要求,则程序终止

cmake minimum required(VERSION 2.8)

设置当前项目名称为test

project(test)

指定头文件的搜索路径,方便编译器查找相应头文件

例子:文件main.cpp中使用到路径/usr/local/include/opencv/cv.h中的这个文件
那么需要在cMakeLists.txt中添加include_directories(“/usr/local/include”)
#这样使用时在main.cpp开头写上#include"opencv/cv.h",编译器即可自动搜索到该头文件

include_directories

设置用变量代替值

例子:set(SRC_LST main.cpp other.cpp)表示定义SRC_LST代替后面的两个.cpp文件

set(variable value)

用指定的源文件为工程添加可执行文件

上述例子表示,用main.cpp生成一个文件名为hello的可执行文件

add_executable(hello main.cpp)

将指定的源文件生成链接库文件。STATIC为静态链接库,SHARED为共享链接库

add_library(libname STATIC/SHARED sources)

为库或二进制可执行文件添加库链接

target_link_libraries(target libraryl library2...)

向当前工程中添加文件的子目录,目录可以是绝对路径或相对路径

add_subdirectory(source_dir)

在目录下查找所有源文件

aux_source_directory(dir varname)

打印输出信息

#mode包括FATAL_ERROR、WARNING、STATUS、DEBUG等,双引号内是打印的内容

message(mode "messagetext")

列表操作(读、搜索、修改、排序)

追加例子:LIST(APPEND CMAKE MODULE PATH S(PROJECT SOURCE DIR}/cmake moduleS)

list

判断语句,使用方法和C语言一致

if,elseif,endif

循环指令,使用方法类似c语言中的for循环

foreach,endforeach

搜索第三方库

version:指定查找库的版本号。
EXACT:要求该版本号必须精确匹配。
QUIET:禁止显示没有找到时的警告信息
REQUIRED选项表示如果包没有找到,则CMake的过程会终止,并输出警告信息
当findpackage找到一个库时,以下变量会自动初始化,
NAME表示库的名称:
<NAME>_FOUND:显示是否找到库的标记
<NAME>_INCLUDEDIRS或<NAME>_INCLUDES:头文件路径
<NAME>_LIBRARIES或<NAME>_LIBS:库文件

find_package(package Name version EXACT/QUIET/REQUIRED)

如果我们当前待编译的工程需要使用第三方库,需要知道3件事
(1)第三方库的名称
(2)去哪里找库的头文件(头文件所在的目录路径)
(3)去哪里找库文件(库的二进制文件(如 .a、.so、.lib、.dll 等)所在的目录路径)

不使用find_package指令的情况下需要手动指定路径

#下面的yourpath1需要替换为Pangolin头文件在当前计算机上的路径
include directiories(yourpathl/Pangolin)
#下面的yourpath2需要替换为生成的库文件在当前计算机上的路径
targetlink libraries(mydemo yourpath2/Pangolin.so)

使用find_package指令的情况下自动指定路径

#查找计算机中已经安装的Pangolin库
find_package(Pangolin REQUIRED)
#自动将找到的Pangolin库中头文件的路径添加到工程中
include_directories($(Pangolin_INCLUDE_DIRS))
#自动将找到的Pangolin库文件链接到工程中
target_link_libraries(mydemo $(Pangolin LIBRARIES))
http://www.dtcms.com/a/571003.html

相关文章:

  • php免费网站源码瀑布流网站源码
  • 实战营销型网站建设备案信息查询
  • Spring Boot3零基础教程,消息传递是响应式核心,笔记103
  • 南京设计网站的公司在腾讯云怎样建设网站
  • 中职商务网站建设课件wordpress如何修改文章路径
  • 做微信小程序的网站设计单位有哪些公司
  • 持续集成与持续部署
  • 网站现在如何做推广wordpress增加字段
  • 国外 网站网站免费版个人简历
  • 建设银行的网站用户名是什么深圳网站设计公司费用是
  • ros中如何进行各个传感器数据时间同步?
  • 图片网站php源码私人建设网站
  • 个人网银工作执行总结
  • 网站自适应是什么做的东莞商城网站建设公司
  • 网站跳出率 查询网站页面布局和样式设计
  • 深圳网站网页制作公司泉州公司网站建设
  • vps建设网站最近七天的新闻重点
  • 河南周口东宇网站建设怎样申请建立自助网站
  • 网络服务商基本网络参数谷歌seo顾问
  • 专门做调研的网站专业的wap网站开发
  • 做公司网站思路郑州营销型网站建设哪家好
  • 网站上线步骤cms管理什么意思
  • 权威的网站制作招聘网站开发需要多长时间
  • 做网站采集什么文章好模仿淘宝详情页做网站
  • HDU1521 排列组合(指数生成函数)
  • 网站seo教材哪里可以免费下载ppt模板
  • 网站要素的优化设计网站seo关键词
  • 广东公园网站建设代理公司网站备案 超链接
  • 简单的网站代码黄浦网站设计
  • php网站开发结构html家乡网站设计模板