CMakeLists写法总结

2023-05-16

个人最近学习了一些关于常见的CMakeLists的一些写法格式,分享给大家。

    CMAKE_MINIMUM_REQUIRED(VERSION xxx) 该项表示要求CMAKE的最低版本号.

    PROJECT(aim1) 此项表示所建立的工程名称 aim1;

    FIND_PACKAGE(xxx)该命令首先会在模块路径中寻找 Find<name>.cmake,这是查找库的一个典型方式。具体查找路径依次为CMake: 变量${CMAKE_MODULE_PATH}中的所有目录。如果没有查询到,随后会查看它自己的模块目录 /share/cmake-x.y/Modules/ ;

     如果没找到这样的文件,find_package()会在~/.cmake/packages//usr/local/share/中的各个包目录中查找,寻找<库名字的大写>Config.cmake 或者 <库名字的小写>-config.cmake (比如FIND_PACKAGE(Opencv REQUIRED),它会查找/usr/local/share/OpenCV中的OpenCVConfig.cmakeopencv-config.cmake)。个人认为这是CMake内置的快速查找方法

   SET( SRC_DIR_PATH src ),SET命令是用来设置变量,换句话说就是给变量赋值,例如本条命令表示SRC_DIR_PATH=src,注意这里的src代表Cmakelists的相对路径,即目录内的src文件夹,。SRC_DIR_PATH表示源文件目录路径。

    FILE(GLOB_RECURSE SOURCE_FILES "src/*.cpp"),FILE文件命令具体包括许多,在这里使用GLOB_RECURSE 代表把该目录(src下)的所有源文件都赋予变量SOURCE_FILES。

   INCLUDE_DIRECTORIES(xxx/include),INCLUDE就像源文件内的include一样,用来设置头文件。这里是用来设置头文件的搜索目录。告诉CMake,编译的时候去哪里找头文件。

   LINK_DIRECTORIES(xxx/lib),LINK就是链接的意思,lib是库,该命令就是要链接库,设置动态链接库的目录,例如链接caffe,可以表示为LINK_DIRECTORIES(/home/usr/caffe/build/lib)。既然已经设置好了链接库的目录,那么具体需要链接哪些库,需要通过下面的操作完成。

   SET( LIB_PROJECT caffe glog boost_system protobuf boost_thread gflags ),该命令是在设置链接库文件的名称。

   随后,需要在ADD_EXECUTABLE()命令后写出TARGET_LINK_LIBRARIES(aim1 ${LIB_PROJECT}),要链接的动态库, 参数指明库的名字即可,比如libcaffe.so,这里是需要加上lib前缀和.so后缀的,或者以变量的形式表示。而上条设置名称时,不需要这些前后缀。

   ADD_EXECUTABLE(TARGET ${PUBLIC_SRC_FILE} ${SRC_DIR_PATH}/detect_read_video_mixture.cpp ),生成可执行文件,需要将生成的名称和TARGET_LINK_LIBRARIES必须保持一致。

message( STATUS "hello world"),message命令就是向终端窗口发送消息,例如本条命令就是发送hello world。

 

 

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
# 指定工程名称
PROJECT(abc)
set(CMAKE_CXX_FLAGS "-std=c++11")

# 导入OpenCV库
FIND_PACKAGE( OpenCV REQUIRED )

# 设置源文件
SET( SRC_DIR_PATH src )
FILE(GLOB_RECURSE SOURCE_FILES "src/*.cpp")

# 设置头文件搜索目录
SET( CAFFE_ROOT /home/kevin/SSD/caffe)
SET( CUDA_HOME /usr/local/cuda-8.0 )
INCLUDE_DIRECTORIES(${CAFFE_ROOT}/include/ ./include/ ${CAFFE_ROOT}/.build_release/src/ ${CUDA_HOME}/include/ )

# 设置动态库链接目录
LINK_DIRECTORIES( ${CAFFE_ROOT}/build/lib/ ${CUDA_HOME}/lib64/)

# 设置要链接的库文件
SET( LIB_PROJECT caffe glog boost_system protobuf boost_thread gflags)

# 指定执行文件输出目录
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
# 生成可执行文件,即程序
ADD_EXECUTABLE( abc ${PUBLIC_SRC_FILE} ${SRC_DIR_PATH}/test.cpp  )

# 要链接的动态库, 参数指明库的名字即可,比如libxxxx1.so, 指明是xxxx1即可!!!
TARGET_LINK_LIBRARIES( abc ${LIB_PROJECT} ${OpenCV_LIBS} )

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMakeLists写法总结 的相关文章

  • python爬取淘宝网

    from selenium import webdriver import re from bs4 import BeautifulSoup import time def url open driver content 爬取源代码 ele
  • SUMO仿真数据输出的配置方法

    1 概述 1 1 目的 说明SUMO仿真结束后可以输出的数据及其设置方法 1 2 参考文档 http sumo dlr de wiki Simulation Output 2 SUMO的输出数据概述 SUMO可以输出的数据概述如下表 xff
  • LQR 控制学习-LQR控制 MATLAB官方教程-LQR 控制器_状态空间系统Matlab/Simulink建模分析

    LQR 控制 本blog主要记录LQR 线性二次调制系统的 xff0c 学习教程为两个B站的教学视频 状态空间4 LQR控制 MATLAB官方教程 视频链接 xff1a 原创翻译 状态空间4 LQR控制 MATLAB官方教程 原创翻译 状态
  • 多传感器融合定位 第一章 概述

    多传感器融合定位 第一章 概述 本记录深蓝学院多传感器定位融合第四期学习笔记 xff0c 官方推荐使用docker进行开发 xff0c 为了方便之后移植部署 xff0c 故本次在次在本地环境进行开发 代码下载 xff1a https git
  • 记一次CSDN的资源加载失败的问题的解决方法

    前段时间 xff0c 某天突然发现CSDN加载不了 xff0c 我还以为网站出现故障了 xff0c 但是没想到第二天还是访问不了 xff0c 问了下同事 xff0c 他的好像没有什么问题 xff08 大概长这样 xff09 找到加载失败的u
  • github release 功能的使用及问题解决

    对很多初学者来说 xff0c 要自己架设一个服务器来提供app更新 xff0c 别说是配置服务器了 xff0c 光是买个主机都很棘手 所幸的是github提供了release功能 xff0c 并有相关api支持 下面就来说说如何使用gith
  • Ubuntu 下如何测试 USB 摄像头支持的分辨率、压缩格式,并使用 OpenCV 按正确的格式读取出来?

    介绍 本篇博客介绍了如何使用v4l utils工具来查看所购买的USB摄像头支持的分辨率等信息 xff0c 并使用一个短小的 opencv 脚本将图像读取出来 测试 USB 摄像头支持的分辨率和压缩格式 需要的工具 xff1a apt in
  • 程序上下文切换,什么是上下文?

    1 什么是上下文 xff1f Linux是一个多任务的操作系统 xff0c 它支持远大于CPU数量的任务同时运行 xff0c 当然 xff0c 这些任务实际上并不是真正的在同时运行 xff0c 而是系统在很短的时间内 xff0c 将CPU轮
  • PHP计算今天、昨天、本周、本月、上月开始时间和结束时间

    start 61 date 39 Y m d H i s 39 mktime 0 0 0 date 39 m 39 date 39 d 39 date 39 Y 39 end time 61 date 39 Y m d H i s 39 m
  • nms和softnms的代码

    文章目录 前言预测框筛选的方法1 nms2 softnms 总结 前言 nms和softnms的原理及相关简单代码总结 预测框筛选的方法 预测框的筛选 xff0c 是检测模块后处理阶段的一个十分重要的过程 因为我们预测输出的预测框 xff0
  • day5·全局与局部变量

    命名空间 命名空间是一个名称到对象之间的映射 xff0c 字典格式 相同的命名空间是不能有重复名称 xff08 字典的特性key不重复 xff09 不同的命名空间是可以有重复名称 局部命名空间 xff1a 函数中定义的名称 包含函数的参数
  • Ubuntu16.04下opencv获取realsense sr300的图像数据

    看到网上很多的文章都是用的库是librealsense xff0c 现在用的库是librealsense2 感觉差别较大 include lt librealsense2 rs hpp gt include lt opencv2 openc
  • P4基础知识

    为了解决 OpenFlow 编程能力不足的问题 Nick 教授等人提出了 P4 高级编程语言 P4 的优点主要有以下三点 可灵活定义转发设备数据处理流程 且可以做到转发无中断的重配置 P4 语言具有对交换机协议解析流程和数据处理流程进行编程
  • 飞控与ROS通信之路之环境搭建(ubuntu18环境下)

    文章目录 一 ROS的安装 二 Mavros的安装 三 QGC地面站的安装 一 ROS的安装 请参考的我的另一个博客 xff1a 点这 二 Mavros的安装 2 1 Mavros的简介 MAVROS相当于PX4飞控中的MAVLINK模块
  • 飞控与ROS通信之路之准备工作

    请先进行环境的搭建 xff1a 参考我的另一篇 博客 目录 xff1a 一 使用QGC为飞控下载固件 二 测试串口端口 三 测试信息 一 QGC下载飞控固件 使用USB链接电脑与飞控 xff0c 并打开QGC 重新插拔USB xff0c 在
  • ROS-新建工作空间、功能包、利用c++、python语言编写发布和订阅通信

    文章目录 1 创建工作空间与功能包1 1工作空间1 1 1工作空间的介绍1 1 2创建工作空间1 1 3编译工作空间 1 2功能包1 2 1功能包的介绍1 2 1功能包的创建1 2 2功能包的编译1 2 3功能包中文件的意义1 2 4设置环
  • 移动端苹果IOS中select的option值不显示问题解决

    移动端苹果IOS中select的option值不显示问题解决 遇到一个问题就是最原始的select标签在安卓手机上显示正常 xff0c 但是在IOS苹果高版本上点击select xff0c 在页面上有占位 xff0c 随便点击也可以将值选在
  • Maven入门 常用知识

    目录 maven目录 Maven常用命令说明 设置http代理 Maven插件安装 xff0c 基于IDEA Maven使用 依赖的配置 依赖范围 传递性依赖 依赖范围 排除依赖 归类依赖 仓库 仓库的由来 仓库的布局 仓库的分类 本地仓库
  • 2020-10-28 元学习(Meta Learning)与迁移学习(Transfer Learning)的区别联系是什么?

    本文转自 xff1a https www zhihu com question 299020462 answer 653199202 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 迁
  • 软件安装系列:Boost 的安装与初试

    这期开始会不断更新一些软件安装使用过程中的一些问题 xff0c 帮着各位老师快速的实现软件的使用 xff0c 在安装过程中总是出现这样那样的问题 xff0c 我们就将基于此类问题 xff0c 总结一些解决办法 xff0c 帮助大家快速成长

随机推荐

  • PHP 出现 ‘continue’ not in the ‘loop’ or ‘switch’ context错误

    把 continue 删除 改为 return 即可
  • Java随机数-获取0到9内的随机数

    本文参考 嗨客网 Java 实战 Java随机数 描述 运用 Java 的 Random 得到随机数 题目 获取 0 到 9 内的随机数 xff08 包括 0 和 9 xff09 题目解决思路 创建一个生产随机数的对象 通过对象方法获取随机
  • Java基础练习题及详细答案

    本文参考 嗨客网 Java 实战 前言 本篇文章给大家安利一些关于 Java 基础的练习题 xff0c 每道题都附有答案链接 xff0c 答案解题的每个步骤到运行结果都十分详细 xff0c 十分适合小白拿来练习 xff0c 也十分适合准备面
  • STM32 四线驱动1602A 填坑!解决重启乱码

    最近学STM32 xff0c 用来丰富一下生活 xff0c 一个四线1602搞得一星期 xff0c 对自己的智商也是醉了 填坑开始 xff01 用的是HAL库编写的 xff0c 仅仅在ODR寄存器使用了一点寄存器操作 xff0c 其余全是H
  • 谭浩强C语言练习题及详细答案

    本文参考 嗨客网 Java 实战 前言 本篇文章分享的是 C 语言程序设计 xff08 谭浩强 C 语言第三版 xff09 课后习题及答案 xff0c 大家在学习了 C 语言程序设计后 xff0c 做几道相关的练习题 xff0c 复习一下该
  • 【自学C++】Windows安装C++语言开发环境

    Windows安装C 43 43 语言开发环境 Windows安装C 43 43 语言开发环境教程 C 43 43 的开发环境可以直接使用 C 语言 的开发环境 xff0c 同时 xff0c Windows 本身就自带 C 43 43 语言
  • 【自学Python】Python bytes转string

    Python bytes转string Python string转bytes教程 在 Python 中 xff0c bytes 类型和 字符串 的所有操作 使用和内置方法也都基本一致 因此 xff0c 我们也可以实现将 bytes 类型转
  • 【自学Python】Python查找字符串位置

    Python查找字符串位置 大纲 Python查找字符串位置教程 在开发过程中 xff0c 很多时候我们有在一个 字符串 中查找另一个字符串位置的需求 xff0c 在 Python 中 xff0c 在一个字符串中查找另一个字符串的位置我们使
  • 【自学Docker 】Docker port命令

    Docker port命令 概述 docker port命令教程 docker port 命令可以用于列出指定的 Docker容器 的端口映射 xff0c 或者将容器里的端口映射到宿主机 该命令后面的 CONTAINER 可以是容器Id x
  • 【自学Docker】Docker pull命令

    大纲 Docker pull命令 docker pull命令教程 docker pull 命令用于从镜像仓库中拉取或者更新指定镜像 docker pull 命令中的 name 即镜像名称后面可以跟上镜像标签或者镜像摘要 docker pul
  • 【自学Docker】Docker push命令

    大纲 Docker push命令 docker push命令教程 docker push 命令用于将本地的 Docker镜像 上传到 Docker镜像仓库 docker push命令使用之前需要要先登陆到镜像仓库 docker push命令
  • 【自学Linux】Linux运行级别

    Linux运行级别 Linux运行级别教程 Linux 可以支持运行级别的设置 xff0c 运行级别就是操作系统当前正在运行的功能级别 xff0c 级别是从 0 到 6 Centos7 系统之前的版本是通过 etc inittab 文件来定
  • 【自学Linux】 Linux文件目录结构

    Linux文件目录结构 Linux文件目录结构教程 在 Linux 中 xff0c 有一个很经典的说法 xff0c 叫做一切皆文件 xff0c 因此 xff0c 我们在系统学习 Linux 之前 xff0c 首先要了解 Linux 的文件目
  • 【自学Linux】Linux一切皆文件

    Linux一切皆文件 Linux一切皆文件教程 Linux 中所有内容都是以文件的形式保存和管理的 xff0c 即一切皆文件 xff0c 普通文件是文件 xff0c 目录是文件 xff0c 硬件设备 xff08 键盘 监视器 硬盘 打印机
  • 链路聚合--Eth-Trunk

    链路聚合技术是解决二层交换机多条链路产生环路的问题 xff0c 不仅避免了环路问题 xff0c 还提高了数据的传输效率 链路聚合分为两种模式 xff1a 手动模式和LACP模式 手动模式 手动模式就是人工的方式去创建Eth Trunk和成员
  • 块元素和内联元素的特点和区别

    lt css基础之块级元素和内联元素 块级元素的特点 xff1a 1 占一整行 2 是一个矩形 3 可定义宽度和高度 xff0c 内边距 xff0c 外边距等 4 其display属性默认为block 内联元素的特点 xff1a 1 并不占
  • 在vs code中使用git

    在vs code使用git 1 下载安装git 下载地址 xff1a Git Downloads 下载后安装选择默认选项即可 2 安装完成后 xff0c 设置git的环境变量 xff1a 在系统的path环境变量中添加git exe的安装目
  • Ubuntu下压缩与解压缩

    一 linux下常用的压缩格式 linux下常用的压缩扩展名有 xff1a tar tar bz2 tar gz 二 Windows下7ZIP软件的安装 因为Linux下很多文件是bz2 gz结尾的文件 xff0c 因此需要在windows
  • VIO的图优化模型

    因子图结构 VIO在纯视觉的基础上添加了IMU约束 xff0c 因子图如下 xff1a 状态变量 VIO中 xff0c 待估计的状态变量为 i 61 R
  • CMakeLists写法总结

    个人最近学习了一些关于常见的CMakeLists的一些写法格式 xff0c 分享给大家 CMAKE MINIMUM REQUIRED VERSION xxx 该项表示要求CMAKE的最低版本号 PROJECT aim1 此项表示所建立的工程