CMAKE 中add_definitions的用法

2023-11-05

If you are in China, please add this CMake flag -DTHIRD_PARTY_MIRROR=aliyun to speed up the downloading procedure for some dependency tar files.

For pure CPU build, please add this CMake flag -DBUILD_CUDA=OFF.

在编译某些项目源码的时候,有提示可以使用相关cmake设置,指令使用方式为

cmake -DTHIRD_PARTY_MIRROR=aliyun ..

CMakeLists中的add_definitions函数

 

0.引言

其实这个函数在安装一些库的时候,它的CMakeLists里面就有这样的函数。典型的就是opencv了。

在这里插入图片描述

opencv安装时候有一些指令也是针对这个函数的,比如安装命令(随便搜索的):

cmake  ../opencv-3.4.1 -DWITH_GTK_2_X=ON -DCMAKE_INSTALL_PREFIX=/usr/local \
-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_TBB=ON\
 -DBUILD_NEW_PYTHON_SUPPORT=ON -DWITH_V4L=ON -DINSTALL_C_EXAMPLES=ON \
 -DINSTALL_PYTHON_EXAMPLES=ON -DBUILD_EXAMPLES=ON  -DWITH_OPENGL=ON \
 -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DWITH_CUBLAS=1 -DWITH_OPENMP=ON
  • 其中-D后面的参数就是控制程序流向。

1.add_definitions()

2.应用

这种可以在我们更改别人代码做实验时使用,既不对其源码进行破坏,又可以添加自己的功能。之前都是在程序中进行#define,有了这个后可以直接在编译的时候进行选择。具体的,在工程CMakeLists.txt 中,使用add_definitions()函数控制代码的开启和关闭:

option(TEST_DEBUG "option for debug" OFF)
if (TEST_DEBUG) 
	add_definitions(-DTEST_DEBUG)
endif(TEST_DEBUG)

运行构建项目的时候可以添加参数控制宏的开启和关闭.

cmake     -DUSE_MACRO = on ..   #打开
cmake  -DUSE_MACRO=off ..   #关闭

在源码中就可以使用:

#ifdef TEST_DEBUG
...
...
#else 
...
#endif
  • 来对程序进行控制。

 

 

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

CMAKE 中add_definitions的用法 的相关文章

  • Mysql的基本操作

    一 数据库 数据表的基本操作 1 数据库的基本操作 a 创建一个数据库 名字为 class 1 create database class b 展示所创建的数据库基本信息MYSQL命令 2 show create database clas
  • 解决AS中Multiple root tags的问题

    AS中Multiple root tags一般出现在将一段代码复制到另一空间时 第一种情况是代码复制时 将原有代码的root tag 也复制过来 第二种是未将代码放入另一空间的包中 检查一下另一空间的包是否包裹住了这段新代码
  • [Tracker] linux 搭建 BitTorrent

    虚拟机 vmware 15 虚拟机系统 ubuntu 20 04 本机系统 win10 注 所有操作都在 root 下进行 Ubuntu 搭建 BitTorrent 本文是在虚拟机中搭建 bitrtorrent 和 web 平台 生成BT种
  • go语言中的递归函数

    问题展示 思路分析 不管是哪门编程语言 递归函数的重要性不言而喻 你只要掌握了下面这两点 没有写不出来的递归 找到初始值 找到递归表达式 结合案例分析 1 找到初始值 第10天 有一个桃子 2 找到递归表达式 第9天 第10天 1 2 第8
  • 服务器能像客户端发信息吗,服务器可以主动给客户端发信息吗

    弹性云服务器 ECS 弹性云服务器 Elastic Cloud Server 是一种可随时自助获取 可弹性伸缩的云服务器 帮助用户打造可靠 安全 灵活 高效的应用环境 确保服务持久稳定运行 提升运维效率 三年低至5折 多种配置可选了解详情
  • anaconda安装python后cmd中激活conda环境

    Anaconda是一个科学计算环境 当在电脑上安装好Anaconda3以后 就相当于安装好了Python 还有一些常用的库 如numpy scrip matplotlib等库 安装Anaconda完成后的环境变量按照通常方法配置就好 1 现
  • 第十三届蓝桥杯全国软件和信息技术专业人才大赛个人赛(电子类)单片机设计与开发科目 程序设计题

    目录 前言 一 功能描述 二 各模块代码 1 数码管相关代码 2 独立按键代码 3 I2C驱动代码 4 LED代码 5 主函数 三 功能展示 总结 前言 最近准备蓝桥杯单片机比赛 差不多学完了省赛要考的各个模块 因此做了一套省赛模拟题 用来
  • python生成矩阵

    import numpy as np n np array range 30 reshape 3 10 n reshape 3 10 划分为三行10列
  • Python 模拟浏览器访问网页,Selenium库的详细使用

    一 Selenium基础 入门教程 Selenium官网教程 1 Selenium简介 Selenium是一个用于测试网站的自动化测试工具 支持各种浏览器包括Chrome Firefox Safari等主流界面浏览器 同时也支持phanto
  • FDTD script command (对结构/数据操作)

    对结构操作 deleteall 删除组内所有项目 deleteall delete 删除选择的项目 不选择默认选择生成的最后一个项目 select obj name delete selectall 选择全部的项目 unselectall
  • 【每日一题】补档 ABC308E - MEX

    题目内容 原题链接 给定一个长度为 n n n 的数组 a a a 一个长度为 n n
  • 关于文章分类

    我从现在开始利用做过得项目作为文章的分类 也就是这个资料如果是在做A项目的过程中用到的 看到的 查到的 我就会把这个文章分到A类中 除非一些特别特别通用的技术 我会放到别的分类 这是我为技术类文章定义的分类的标准 我的脑袋实在不好用 学过的
  • Java - 异常 - no plugin found for prefix 'tomcat 7' in the current project and in the plugin groups

    方法1 pom加
  • 内存池

    频繁的申请和释放内存会降低程序的效率 因此诞生了内存池 为了避免频繁地申请 释放内存 IOCP使用内存池来管理缓冲区对象和客户上下文对象使用的内存 具体情况是 使用指针保存所有空闲的内存块 形成空闲列表 当申请内存时 这个指针不为NULL
  • 机器学习笔记 - 数据科学中基于 Scikit-Learn、Tensorflow、Pandas 和 Scipy的7种最常用的特征工程技术

    一 概述 特征工程描述了制定相关特征的过程 这些特征尽可能准确地描述底层数据科学问题 并使算法能够理解和学习模式 换句话说 您提供的特征可作为将您自己对世界的理解和知识传达给模型的一种方式 每个特征描述一种信息 片段 这些部分的总和允许算法
  • svn服务器记录日志文件,svn服务器日志时间设置

    svn服务器日志时间设置 内容精选 换一换 日志记录了运行环境的运行情况和功能流程的处理情况 是维护人员查看系统状态 进行问题定位的重要工具和手段 日志模块根据系统设置的日志级别 记录不同详细程度的内容 满足不同系统维护需求 支持通过以下方
  • Python自动录入ERP系统数据

    大家好 我是毕加锁 今天给大家带来的是用Python解决Excel问题的最佳姿势 文末送书 文末送书 文末送书 项目总体情况 软件 Pycharm 环境 Python 3 7 9 考虑到客户可能会有不同操作系统 为了兼容性考虑 技术库 re
  • 软件概要设计如何写(文档恐惧症的程序猿必读)

    一般说来 需求分析属于软件定义方面 而概要设计 详细设计属于软件开发的阶段 按照传统软件工程的软件过程 区别如下 1 需求分析 产生 软件功能规格说明书 需要确定用户对软件的需求 要作到明确 无歧义 不涉及具体实现方法 用户能看得明白 开发
  • Java、Python等等该怎么选择电脑?一文详解覆盖全学科电脑配置选择

    文章目录 1 Java 前端 2 Python 3 Python 大数据 大数据 4 UI设计 5 软件测试 6 新媒体 短视频运营 7 产品经理 9 C C Go区块链 10 Linux云计算 运维开发 11 影视制作 12 HPH全栈

随机推荐

  • Mask-RCNN应用 - 关于maskrcnn可以接入训练的数据集格式及使用方法问题

    MaskRCNN入门路径 gt Mask RCNN应用研究方法 持续更新中 如有问题或需要指导 请私聊留下联系方式用手机打开https m tb cn h fINaraE tk PCzA2jPp4V0进行咨询 Complete 2021 0
  • Web自动化Selenium-常见控件操作

    搜索框 以百度搜索框为例 我们来看一下搜索框的元素属性 标签类型是
  • 浏览器(Chrome,IE等等)启用java程序-webstart(JNLP)方式

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 浏览器 Chrome IE等等 启用java程序 webstart方式 贴下自己的码云地址 https gitee com imbobo bo angel bo 本文章讲解
  • C++的双端队列

    双端队列介绍 1 双端队列知识需知 2 大试牛刀 1 双端队列知识需知 由于队列是一种先进先出 FIFO 的数据结构 因此无法直接从队列的底部删除元素 如果希望从队列的底部删除元素 可以考虑使用双端队列 deque 双端队列 deque 是
  • 心之森。

  • Windows10 开启、关闭、重启MySQL服务

    1 win R 输入services msc 打开服务 2 找到mysql服务 3 服务名称为MySQL80 4 以管理员的身份打开命令行 运行 C WINDOWSsystem32 gt net stop mysql80 MySQL80 服
  • ElasticSearch(11)bulk批量操作与导入数据

    1 项目环境准备 springboot整合es 项目代码说明 2 bulk批量操作 都是使用add 方法实现的 未执行之前 package com yy esdemo import org elasticsearch action bulk
  • QT css样式 详解

    font family 楷体 为设置字体类型 标准形式需要加双引号 不加也可能会生效 具体看系统是否支持 中英文都支持 但要保证字体编码支持 一般程序编码为 utf 8 时没问题 font style normal 为设置字体斜体样式 it
  • Qt实现端口扫描器

    首先展示一下效果 界面通过Qt设计师做出来的 主要有两个类 首先主函数 include mainwindow h include
  • CSRF的攻击与法防御

    CSRF的攻击与法防御 一 CSRF漏洞原理 CSRF Cross Site Request Forgery 跨站点伪造请求 是一种网络攻击方式 该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点 从而在未授权的情况下执
  • 【vivo2021届秋季校招】1. 编译依赖问题 <拓扑排序、堆>

    vivo2021届秋季校招 1 编译依赖问题 一个完整的软件项目往往会包含很多由代码和文档组成的源文件 编译器在编译整个项目的时候 可能需要按照依赖关系来依次编译每个源文件 比如 A cpp 依赖 B cpp 那么在编译的时候 编译器需要先
  • Embedded Mono: Invoking a C# generic method (Part 2)

    Embedded Mono Invoking a C generic method Part 2 A while ago I wrote about how to invoke a C generic method by using a h
  • Java项目,内存泄漏问题排查与总结,拓展容器相关知识Dockerfile

    问题场景 现象 有一次发现容器里面启动的java项目探活每过一段时间 大概半小时 就失败 导致项目在容器中重复的重启 服务时好时断 问题描述 在容器中排查问题的时候发现了两个问题 进入容器查看启动日志发现 项目启动之初是能够正常运行并且访问
  • WIFI学习第二天

    Wi Fi 6 802 11ax Wi Fi 6是下一代802 11ax标准的简称 随着Wi Fi标准的演进 WFA为了便于WiFi用户和设备厂商轻松了解其设备连接或支持的Wi Fi型号 选择使用数字序号来对WiFi重新命名 另一方面 选择
  • 参考文献对齐方法

    参考文献对齐方法 首先把符号和文本之间的空格都删掉 复制粘贴到记事本中 把每一条参考文献的 符号和文本之间以及文本最后加上Tab键 复制粘贴回word中 全选后右键 段落 两端对齐 悬挂缩进2字符 完成
  • ffmpeg常用音频处理

    使用ffmpeg分析修改音频 ffmpeg layouts查看音频的布局情况 1 双声道合并单声道 ffmpeg i music mp3 ac 1 music aac 2 双声道的提取 map channel input file id s
  • 大数据业务模型和技术架构简图

    大数据业务模型和技术架构简图 1 背景 大数据技术随着互联网的发展而兴起于21世纪初 最早遇到海量数据技术问题的是搜索引擎公司 如谷歌 数据量级别的暴增是由于2010年之后的互联网兴起 网络用户数量暴涨带来的海量用户数据暴增 对大数据处理的
  • firefox火狐能打开http网址,针对所有https网址无法打开

    1 常规的做法 遇到https无法打开时 最常用的做法就是各种百度 然后找到的解决方案就是像下面链接处理的这种 https blog csdn net u011650143 article details 70303894 utm sour
  • linux 网络编程易错点

    1 网络字节序 l 网络字节序存在的意义是实现不同主机字节序的兼容 2 accept l 生成一个新的套接字 这个是所有socket通讯模型的基础 3 sendto l 该函数一定要指定dest len的大小 否则接收端接收不到数据 4 广
  • CMAKE 中add_definitions的用法

    If you are in China please add this CMake flag DTHIRD PARTY MIRROR aliyun to speed up the downloading procedure for some