CMAKE 中 add_definitions的用法.

2023-10-27

1.官方的说明

Adds -D define flags to the compilation of source files.

add_definitions(-DFOO -DBAR ...)

Adds definitions to the compiler command line for sources in the current directory and below. This command can be used to add any flags, but it is intended to add preprocessor definitions. Flags beginning in -D or /D that look like preprocessor definitions are automatically added to the COMPILE_DEFINITIONS directory property for the current directory. Definitions with non-trivial values may be left in the set of flags instead of being converted for reasons of backwards compatibility. See documentation of the directorytargetsource file COMPILE_DEFINITIONS properties for details on adding preprocessor definitions to specific scopes and configurations.

https://cmake.org/cmake/help/v3.0/command/add_definitions.html2.

2.小例子:

假设项目是以CMakeLists.txt 构建的.

代码中通过宏 USE_MACRO 作为区分.

...

#ifdef USE_MACRO

...

#endif

我们可以通过在项目中的CMakeLists.txt 中添加如下代码控制代码的开启和关闭.

 

+ OPTION(USE_MACRO

+  "Build the project using macro"

+  OFF)

+ IF(USE_MACRO)

+  add_definitions("-DUSE_MACRO")

+ endif(USE_MACRO)

 

 

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

 

开启: cmake -DUSE_MACRO=on ..

关闭: cmake -DUSE_MACRO=off ..

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

CMAKE 中 add_definitions的用法. 的相关文章

随机推荐

  • Nexus搭建企业私有库

    需求背景 做私有库的工具有很多 如上一篇介绍的轻量级的npm包管理工具verdaccio 但刚好maven私服用的是nexus 所以最后选择了nexus来做npm的私服 和maven一套便于维护 nexus安装过程省略 创建 reposit
  • m.2接口和nvme区别_只看外表可不行,M.2接口也有大区别

    如今 硬盘早已告别了以往的大块头形象 如口香糖般大小的固态硬盘不仅让笔记本更轻更薄 还在速度上达到了新的高度 不过 这些固态硬盘虽然在外表上相差无几 但实际上还是有不少区别的 如果不注意这些区别而盲目购买硬件的话 那就很容易会产生无法使用的
  • 数据集(casia,msu,replay,oulu)的详细信息

    雷锅出品 1 casia 2 msu mfsd 3 replay 4 oulu 1 casia 总共有50个subject 其中30个作为test 20个作为train 每个subject总共有12个视频 故总共600个视频 其中3个为真
  • MySQL使用load data导入数据时报错: Cannot add or update a child row: a foreign key constraint fails

    目录 问题来源 解决办法 问题来源 初学MySQL 创建三个表department employee以及project 其中问题主要出现在employee表中 该表定义如下 CREATE TABLE employee id INT 10 P
  • Anaconda更换清华源、中科大源

    Anaconda是一个用于科学计算的Python发行版 支持Linux Mac Windows 包含了众多流行的科学计算 数据分析的Python 包 Anaconda安装好之后 默认的镜像是官方的 由于官网的镜像在境外 访问太慢或者不能访问
  • Mac下IDEA + Java EE Web + Tomcat环境配置

    本篇文章主要用于简要记录Mac下IDEA Java EE Web Tomcat的环境配置的流程 因为环境我已经事先配置好了 这里只演示流程 就不再重新安装了 下面我们开始吧 目录 IDEA Java EE Web Tomcat的环境配置 J
  • GPIO 有3种状态, 上拉,下拉,不拉

    GPIO 有3种状态 上拉 下拉 不拉 当GPIO处于output模式 一般选择no pull 引脚能够正确地输出输出高电平低电平信号 当GPIO处于input模式 需要根据默认的输入值来确定配置模式 如果默认输入的值为1时 最好配置为pu
  • 解决java.lang.NoClassDefFoundError错误

    本文目录 1 问题背景 2 NoClassDefFoundError错误发生的原因 3 NoClassDefFoundError和ClassNotFoundException区别 4 如何解决NoClassDefFoundError错误 5
  • 【免费】油管无字幕视频如何转录成文本

    啊哈 周末做了个好玩的 之前我做了个小工具 把 youtube 无字幕视频转录成音频 再提取文本 交给 ChatGPT 或者 http Claude ai 摘录出大纲 并组织成 markdown 文档 本来只自己用 因需要部署代码 现在我把
  • 【EI/SCOPUS征稿】第五届IEEE机器人与智能制造技术国际会议 (ISRIMT 2023)

    第五届IEEE机器人与智能制造技术国际会议 ISRIMT 2023 2023 5th International Symposium on Robotics Intelligent Manufacturing Technology 重要信息
  • 智能指针的原理、使用和实现

    1 智能指针的作用 C 程序设计中使用堆内存是非常频繁的操作 堆内存的申请和释放都由程序员自己管理 程序员自己管理堆内存可以提高了程序的效率 但是整体来说堆内存的管理是麻烦的 C 11中引入了智能指针的概念 方便管理堆内存 使用普通指针 容
  • uniapp:APP开发,后台保活

    前言 在ios中 软件切换至后台 手机息屏 过了十来秒软件就会被系统挂起 APP内的任务就不能继续执行 在android中 默认情况下 软件在后台运行的时候 触发某些特定条件的情况下 会被杀掉进程 解决方案 以下方案均测试息屏后台运行两小时
  • 谭安林:大数据在智能外呼系统的应用

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由云加社区技术沙龙发表于云 社区专栏 谭安林 腾讯高级工程师 2015年加入腾讯 8年互联网从业经历 从事大数据平台与产品开发相关工作 先后参与广告 金融等领域产品项目 目前负责
  • vue-gojs-初学笔记-从简单完整案例剖析开始

    第一章 认识GOJS
  • matlab 实现dtmf 信号检测代码,DTMF信号的产生与检测算法研究与MATLAB实现.rar

    摘 要 双音多频信号 DTMF Dual Tone Multi Frequency 是电话系统中电话机与交换机之间的一种用户信令 通常用于发送被叫号码 由于其抗干扰性强和高速传输的优点 除了应用于电话系统 还被在全世界范围内广泛使用在各种按
  • chatgpt基于Qt实现的To-Do List小项目(内附源码),码农将何去何从....

    笔者前言 OpenAI前一段发布聊天机器人模型ChatGPT 迅速出圈全网 chatgpt的出现 让LLMs走进了普通人的视野 同时 也让传统的AI助手变成了原始人 chatgpt向我们展示了LLM目前的天花板 而且这个天花板还相当高 在突
  • 基本的线程机制

    一 线程概念 并发编程使我们可以将程序划分成多个分离的 独立运行的任务 通过使用多线程机制 这些独立任务中的每一个都将由执行线程来驱动 一个线程就是在进程中的一个单一的顺序控制流 因此 单个进程可以拥有多个并发执行的任务 但是你的程序是的每
  • PostgreSQL:流复制环境清除 pg_xlog 日志

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 今天一流复制 Streaming Replication 数据库一目录空间告警 经查是 pg xlog 目录 WAL 日志文件过多 已超过阀值 pg xlog 是数据库重做
  • springboot整合LogstashTcpSocketAppender日志保存到ELK

    1 安装elasticsearch 2 安装kibana 3 安装logstash 配置logstash springboot logstash conf文件如下 input tcp mode gt server host gt 127 0
  • CMAKE 中 add_definitions的用法.

    1 官方的说明 Adds D define flags to the compilation of source files add definitions DFOO DBAR Adds definitions to the compile