CMake 编译选项设置

2023-05-16

在CMakeLists.txt中可以通过修改CMake内置的环境变量来改变C或C++的编译选项.

编译选项相关的CMake 变量如下:

CMAKE_C_FLAGS = 
CMAKE_C_FLAGS_DEBUG = -g
CMAKE_C_FLAGS_MINSIZEREL = -Os -DNDEBUG
CMAKE_C_FLAGS_RELEASE = -O3 -DNDEBUG
CMAKE_C_FLAGS_RELWITHDEBINFO = -O2 -g -DNDEBUG

CMAKE_CXX_FLAGS = 
CMAKE_CXX_FLAGS_DEBUG = -g
CMAKE_CXX_FLAGS_MINSIZEREL = -Os -DNDEBUG
CMAKE_CXX_FLAGS_RELEASE = -O3 -DNDEBUG
CMAKE_CXX_FLAGS_RELWITHDEBINFO = -O2 -g -DNDEBUG

等号右边是通过在CMakeLists.txt中打印对应变量得到的默认值。

对于C语言设置CMAKE_C_FLAGS相关参数,C++语言设置CMAKE_CXX_FLAGS相关参数。并且分为DEBUG,RELEASE,MINSIZEREL和RELWITHDEBINFO四种类型。

以C++语言编译选项为例:

CMAKE_CXX_FLAGS_DEBUG:编译Debug版本的时候会采用的编译选项,默认只有一个-g选项,包含调试信息;

CMAKE_CXX_FLAGS_RELEASE:编译Release版本的时候采用的编译选项,默认包-O3选项,该选项表示优化等级;

CMAKE_CXX_FLAGS_MINSIZEREL:主要减小目标文件大小,选项-Os就是这个作用;

CMAKE_CXX_FLAGS_RELWITHDEBINFO:包含调试信息的Release版本,-O2和-g,优化的同时也包含了调试信息;

CMAKE_CXX_FLAGS:这个选项没有默认值;

顾名思义,当CMake在编译项目的时候,选项为Debug则会采用CMAKE_CXX_FLAGS_DEBUG选项,编译Release则会采用CMAKE_CXX_FLAGS_RELEASE选项,因此,需要设置编译选项的时候,在CMakeLists.txt中设置这些变量就可以了。

实际上可以分别设置CMAKE_CXX_FLAGS_DEBUG和CMAKE_CXX_FLAGS_RELEASE,如下:

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -std=c++11 -Wl,-rpath=../lib")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=c++11 -g")

因为在最终编译的时候的编译选项不管是Release还是Debug都包含了CMAKE_CXX_FLAGS这个变量。

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

CMake 编译选项设置 的相关文章

  • 【Python深度学习之路】-3.1性能评价指标

    1 理解混淆矩阵 所谓混淆矩阵 xff0c 是指将模型对各个测试数据的预测结果分为真阳性 真阴性 假阳性和假阴性并对符合各个观点的预测结果的数量进行统计的一种表格 其中 xff0c 真阳性和真阴性表示机器学习模型的回答是正确的 xff0c
  • 【Python深度学习之路】-3.2PR曲线

    1 何谓PR曲线 所谓PR曲线是指用横轴表示召回率 xff0c 纵轴表示精确率 xff0c 将数据绘制成图表的形式所得到的曲线 召回率和准确率两个指标成反比关系 xff0c 所谓反比关系 xff0c 指的是当提升精确率时 xff0c 召回率
  • 【Python深度学习之路】产生随机数

    随机数的生成 1 设置种子 计算机是根据被称为 种子 seed 的数据来生成随机数的 所谓种子 xff0c 是指在生成随机数的过程中所使用的初始值 xff0c 如果种子的值固定不变 xff0c 生成的随机数序列也是不变的 通过使用相同的随机
  • 【Python深度学习之路】时间序列数据

    1 datetime类型 对于时间序列数据进行处理时 xff0c 需要使用表示时间的方法 在P樱桃红中提供了datetime数据类型来对日期和实践进行处理 指定datetime datetime 年 xff0c 月 xff0c 日 xff0
  • caffe学习笔记

    一 mnist例程 https blog csdn net bestrivern article details 85101303 二 cifar10例程 附录 xff1a caffe常见问题及注意事项 https blog csdn ne
  • 我的创作纪念日

    机缘 提示 xff1a 可以和大家分享最初成为创作者的初心 例如 xff1a 实战项目中的经验分享日常学习过程中的记录通过文章进行技术交流 收获 提示 xff1a 在创作的过程中都有哪些收获 例如 xff1a 获得了多少粉丝的关注获得了多少
  • Python数据分析常用30段优化代码

    1 重复元素判定 以下方法可以检查给定列表是不是存在重复元素 xff0c 它会使用 set 函数来移除所有重复元素 def all unique lst return len lst 61 61 len set lst x 61 1 1 2
  • Python妙用小工具:2行Python给图片加水印

    filestools库介绍 今天给大家介绍的Python库 xff0c 叫做filestools xff0c 由小小明开发 xff0c 直接使用如下命令 xff0c 安装后使用 pip install filestools index ur
  • 在Excel中调用Python脚本,实现数据自动化处理

    说起Excel xff0c 那绝对是数据处理领域王者般的存在 xff0c 尽管已经诞生三十多年了 xff0c 现在全球仍有7 5亿忠实用户 xff0c 而作为网红语言的Python xff0c 也仅仅只有700万的开发人员 Excel是全世
  • Python数据分析中常用的工具类和方法【持续更新系列】

    本文主要记录在工作和学习中 xff0c 做数据分析常用到的一些简单的工具函数和类 span class token comment 判断是否为浮点数 span span class token keyword def span span c
  • 【Python深度学习之路】-1 机器学习概论

    Python深度学习之路 1 机器学习概论 1 1 机器学习简介 机器学习火热的原因是 xff1a 人类无论如何也做不到在短时间内实现从大量数据中自动地计算出正确结果的操作 所谓机器学习 xff1a 通过对数据进行反复的学习 xff0c 来
  • 【Python深度学习之路】-2.1 机器学习的流程

    2 1 机器学习的流程简介 进行机器学习的整体流程 xff1a 数据收集 数据清洗 xff08 清洗重复或缺失的数据 xff0c 以提高数据的精读 xff09 运用机器学习算法对数据进行学习 xff08 获取基准 xff09 使用测试数据进
  • 【Python深度学习之路】-2.2 过拟合与集成学习

    2 3 过拟合 计算机对数据进行了过度的学习而产生的状态 xff0c 简称 过拟合 避免过拟合的方法 xff1a 深度学习中会使用 Dropout 的方法 xff0c 而在常规解决方案中 xff0c 我们通常会使用 归一化 来消除对存在偏差
  • 【Python深度学习之路】-4 监督学习

    Python深度学习之路 4 监督学习 4 1 了解监督学习 xff08 分类 xff09 监督学习 xff1a 根据积累的经验数据对新的数据或将来的数据进行预测 xff0c 或者进行分类的一种学习方式 无监督学习 xff1a 对积累的经验
  • 【Python】string模块之ascii_letters、digits(用于生成验证码)

    方法概述 xff1a 1 ascii letters方法的作用是生成全部字母 xff0c 包括a z A Z 2 digits方法的作用是生成数组 xff0c 包括0 9 span class token keyword import sp
  • 傅里叶变换

    傅里叶变换 目录 滤波傅里叶变换简介傅里叶变换的性质快速傅里叶变换 xff08 FFT xff09 一 xff1a 滤波 滤波是将信号中特定波段频率滤除的操作 xff0c 是抑制和防止干扰的一项重要措施 是根据观察某一随机过程的结果 xff
  • centos 常用的网络登录端口测试工具

    ssh 登录 last lastb who users w lastlog ac d ac p lsof lsof i 443 ngrep ngrep port 80 ngrep q 39 GET HTTP 1 01 39 ngrep q
  • 基于stm32的半实物仿平台开发——FreeRTOS、PID控制电机

    目录 一 系统方案 1 1 系统基本方案 1 2 程序结构方案设计 二 系统理论分析计算 2 1控制算法的分析 三 硬件的选型 3 1编码器电机的选型 四 源代码 摘要 本文基于STM32F103ZET6开发板开发了一个直流电机的实物控制系
  • vnc viewer使用方法

    首先需要配置ip xff0c 网络适配器配置那个ipv4到同一网段 1 双击打开exe 2 输入目标ip 端口 3 输入密码 服务器管理工具 这里写目录标题 一 VNC管理工具1 1 工具介绍1 2 使用步骤1 3 使用截图 二 KVM安装
  • 【Unity Shader】用Cubemap实现天空盒和环境映射

    1 关于Cubemap Cubemap在实时渲染中有很多应用 xff0c 最常见的就是实现天空盒 xff08 Skybox xff09 和环境映射 xff08 Environment Mapping xff09 2 实现天空盒 2 1 实现

随机推荐

  • ubuntu samba搭建教程

    1 更新当前软件 sudo apt get upgrade sudo apt get update sudo apt get dist upgrade 2 安装samba服务器 sudo apt get install samba samb
  • 大数据学习路径

    第一阶段linux 43 搜索 43 hadoop体系 Linux基础 shell编程 高并发架构 lucene solr搜索 hadoop体系 HDFS mapreduce hbase zookeeper hive flume sqoop
  • 【Windows11来了】WIN11抢先体验,使用VMware虚拟机安装WIN11

    2021 6 30更新 xff1a 解决安装时出现 Operating System not found 的问题 2021 6 26更新 xff1a 解决了不同VMware版本可能默认引导方式不同造成启动不成功的问题 2021 6 25更新
  • 斜杠、反斜杠、双斜杠、反双斜杠的区别和使用方法及范围

    背景 这边我就找了两篇大神写的文章 xff0c 讲得非常清晰明了 文章主要讲了一些历史缘故和我们面对各种斜杠时的疑惑 斜杠 和反斜杠 深入探讨正斜杠和反斜杠 概念 1 斜杠 34 34 是URL地址中用到的分隔符 xff0c 并且在linu
  • C语言中int占几个字节,指针占几个字节,由什么决定呢?

    int占几个字节 今天心血来潮 xff0c 想要了解一下C语言中各整型占用几个字节 先上代码测试两个环境 xff1b include lt stdio h gt include lt stdlib h gt int main printf
  • 虚拟串口模拟器和串口调试助手使用教程

    虚拟串口 xff08 虚拟 COM 端口 xff09 xff0c 应该很多人都知道 xff0c 也就是一种模拟物理串行接口的 软件 它完全复制了硬件 COM 接口的功能 xff0c 并且将被操作系统和串行应用程序识别为真实端口 以前的电脑
  • 在Ubuntu上安装Boost的五种方法(全网最全,建议收藏)

    问题描述 我在Ubuntu上 xff0c 并且想安装Boost 我尝试过 sudo apt get install boost 但是没有这样的软件包 在Ubuntu上安装Boost的最佳方法是什么 xff1f 最佳方法 您可以使用apt g
  • 编程入门指南:零基础如何自学编程?

    注明一下 xff1a 本文适用于零基础 xff0c 想自学编程的伙伴 xff0c 重点在于盘清底层逻辑以及整理一些学习途径 编程学习如何入门 xff1f 第一步 xff1a 做好心理建设 首先要告诉你一个坏消息 xff1a 自学编程的弯路多
  • Clion中控制台中文出现乱码怎么解决?

    为什么会出现乱码 xff0c 肯定是字符的编码方式不匹配导致的 我们知道 xff0c 现在比较新一点的编辑器和IDE基本都是默认UTF 8编码了 xff0c 但是在Windows下 xff0c 控制台中的中文编码格式是GBK xff0c 因
  • Pandas教程(非常详细)

    文章目录 教程特点阅读条件 Pandas是什么Pandas主要特点Pandas主要优势Pandas内置数据结构 Pandas库下载和安装Windows系统安装Linux系统安装1 Ubuntu用户2 Fedora用户 MacOSX系统安装
  • Pygame教程(非常详细)

    文章目录 教程特点阅读条件 Pygame是什么扩展知识 Pygame下载和安装1 pip包管理器安装2 二进制安装包安装 第一个Pygame程序初始化程序创建Surface对象事件监听游戏循环 Pygame Display显示模块详解Pyg
  • 如何系统地入门学习stm32?

    来自 xff1a https www zhihu com question 46616925 心得 xff1a 本人当初学习STM32的时候有一些跟风的因素 xff0c 自以为学的芯片越多就越厉害 61 61 其实 xff0c 学习嵌入式重
  • 一口气从零读懂CAN总线以及应用

    在各种总线通信中 xff0c 很多都是点对点的通信方式 xff0c CAN总线是一种去中心化的多主控通信方式 xff0c 在汽车领域应用很多 xff0c 因此有必要了解一下 概要 上世纪八十年代以来 xff0c 汽车ECU越来越多 xff0
  • 开源免费录屏和直播软件OBS Studio教程

    转载于 xff1a https zhuanlan zhihu com p 107720665 OBS Studio是目前比较主流的免费开源录屏和直播软件 xff0c 它提供了丰富的功能特性 xff0c 可以媲美一些受欢迎的同类商业软件 如果
  • KY-RTI分布仿真技术教程

    已剪辑自 https blog csdn net sillysunny article details 84197424 第一章 简介 高层体系结构 xff08 High Level Architecture xff0c HLA xff09
  • 自动化测试框架知识,读这一篇就够了!怎么构建属于自己的自动化测试框架

    已剪辑自 https segmentfault com a 1190000022693251 自动化测试因其节约成本 提高效率 减少手动干预等优势已经日渐成为测试人员的 潮流 xff0c 从业人员日益清楚地明白实现自动化框架是软件自动化项目
  • 代理模型优化算法

    已剪辑自 https zhuanlan zhihu com p 99609634 微信公号 xff1a Mat物语科研数据分析 阅读本文最好需要提前了解 xff08 一点点 xff09 的一些知识点 xff08 不懂也可以阅读 xff09
  • Maven常用知识梳理总结

    一 xff0e Maven简介 Maven的本质是一个项目管理工具 xff0c 将项目开发和管理过程抽象成一个项目对象模型 POM 将java项目看成是一个对象来进行管理 POM Project Object Model xff1a 项目对
  • 让数据变得更直观:10款常用的可视化工具(解决99%的可视化大屏需求)

    不管是跟上司汇报工作 xff0c 还是向客户介绍项目 xff0c 在工作中各种与 汇报 有关的事情 xff0c 都离不开图表 漂亮而有视觉冲击力的图表可以给你的工作大大加分 xff0c 让对方直观理解你想表达的内容 xff0c 而大屏能将图
  • CMake 编译选项设置

    在CMakeLists txt中可以通过修改CMake内置的环境变量来改变C或C 43 43 的编译选项 编译选项相关的CMake 变量如下 xff1a CMAKE C FLAGS span class token operator 61