cmake:设置编译选项的讲究(add_compile_options和CMAKE_CXX_FLAGS的区别) 转自CSDN

2023-05-16

https://blog.csdn.net/10km/article/details/51731959

cmake:设置编译选项的讲究(add_compile_options和CMAKE_CXX_FLAGS的区别)
2016年06月22日 09:53:48
阅读数:25928
在cmake脚本中,设置编译选项可以通过add_compile_options命令,也可以通过set命令修改CMAKE_CXX_FLAGS或CMAKE_C_FLAGS。
使用这两种方式在有的情况下效果是一样的,但请注意它们还是有区别的:
add_compile_options命令添加的编译选项是针对所有编译器的(包括c和c++编译器),而set命令设置CMAKE_C_FLAGS或CMAKE_CXX_FLAGS变量则是分别只针对c和c++编译器的。

例如下面的代码

判断编译器类型,如果是gcc编译器,则在编译选项中加入c++11支持

if(CMAKE_COMPILER_IS_GNUCXX)
add_compile_options(-std=c++11)
message(STATUS "optional:-std=c++11")
endif(CMAKE_COMPILER_IS_GNUCXX)
1
2
3
4
5
使用add_compile_options添加-std=c++11选项,是想在编译c++代码时加上c++11支持选项。但是因为add_compile_options是针对所有类型编译器的,所以在编译c代码时,就会产生如下warning

J:\workspace\facecl.gcc>make b64
[ 50%] Building C object libb64/CMakeFiles/b64.dir/libb64-1.2.1/src/cdecode.c.obj
cc1.exe: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C
[100%] Building C object libb64/CMakeFiles/b64.dir/libb64-1.2.1/src/cencode.c.obj
cc1.exe: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C
Linking C static library libb64.a
[100%] Built target b64

虽然并不影响编译,但看着的确是不爽啊,要消除这个warning,就不能使用add_compile_options,而是只针对c++编译器添加这个option。
所以如下修改代码,则警告消除。

判断编译器类型,如果是gcc编译器,则在编译选项中加入c++11支持

if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
message(STATUS "optional:-std=c++11")
endif(CMAKE_COMPILER_IS_GNUCXX)

转载于:https://www.cnblogs.com/Dennis-mi/articles/9212573.html

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

cmake:设置编译选项的讲究(add_compile_options和CMAKE_CXX_FLAGS的区别) 转自CSDN 的相关文章

随机推荐

  • 电赛准备过程记录

    电赛记录 xff08 1 xff09 2021全国大学生电子设计大赛参赛纪实 xff08 无人机赛题 xff09 提示 xff1a 写完文章后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 电赛记录 xf
  • Jetson TX2新手上路全记录(1)

    Jetson TX2小白零基础上手记录 xff08 1 xff09 暑假申请了一块TX2进行学习 xff0c 从头开始记录学习过程 趁着在装虚拟机先唠两句 文章目录 Jetson TX2小白零基础上手记录 xff08 1 xff09 开箱环
  • Jetson TX2新手上路全记录(3)

    ng 3 提示 xff1a 这里可以添加系列文章的所有文章的目录 xff0c 目录需要自己手动添加 例如 xff1a 第一章 Python 机器学习入门之pandas的使用 提示 xff1a 写完文章后 xff0c 目录可以自动生成 xff
  • 傅里叶变换详解

    一 用途 xff1a 任意 的函数经过一定的分解 xff0c 都能够表示为正弦函数的线性组合形式 比如想要过滤一首音乐中的噪音 xff0c 我们可以使用傅里叶变换将叠加后的图像分离为一个个纯声的正弦图像 xff0c 去掉特定频率的噪声就能实
  • git如何删除本地所有未提交的更改

    在使用git的时候 xff0c 如果本地做的修改都不想保留了 xff0c 可以通过下面命令恢复成HEAD版本 xff0c 未提交的以及加入暂存区中的修改都会被舍弃 git reset hard git clean xdf 转自
  • ESP32的RMT模块项目实用

    1 技术背景 最近公司在用ESP32的模组方案实现智能音箱的相关功能的项目 需要展示模组的网络状态以及音箱的语音交互状态 xff0c 找了一家RGB灯板供应商 需要模组通过一个io口输出脉冲波形 xff0c 来控制灯板切换模式 xff0c
  • ESP32 LOG库使用

    ESP32 log库 官方文档 一 printf是不可重入函数 printf不能在中断中被调用的原因是它是一个不可重入函数 xff0c 而在中断中要避免调用不可重入函数 xff0c 首先我们先说说什么是不可重入函数 简单说来 xff0c 区
  • C++ 数组(vector)常用操作总结

    目录 1 vector对象的定义和初始化方式 2 vector 常用基础操作 3 使用迭代器的遍历 插入 删除操作 4 vector 元素的重排操作 xff08 排序 逆序等 xff09 5 vector 中找最值 6 改变vector大小
  • 小熊派开发板移植RT-FOTA

    前言 买了小熊派的开发板 xff0c 将demo code验证完成之后就放下了 刚好最近工作也在做OTA相关的开发 xff0c 发现自己对于升级的功能还不够了解 xff0c 在码云找到了一位大神基于RTThread的RT FOTA代码 xf
  • 小熊派移植RT-Thread 的app代码

    前言 在上一篇我们已经讲解了如何移植RT FOTA到小熊派开发板 本篇我们将继续移植RT Thread xff0c 实现app代码的移植开发 xff0c 并将BootLoader和app一起烧录到开发板 xff0c 完成BootLoader
  • easyflash源码分析流程图

    最近周末刚好有空 xff0c 将easyflash源码看了一下 xff0c 了解了作者的设计理念 将学习内容整理成流程图贴上来 1 esayflash初始化流程 2 esayflash set env
  • .git bojects目录文件为空

    这里写自定义目录标题 git error object file git objects b9 e269f50db2a3415cc8ad5ba40b82b9b6a13d45 is empty 解决方法 xff1a 1 find git ob
  • freertos与rtthread内核实现的不同处

    一直在使用rtos作为主要开发内容 xff0c 却没有详细了解过rtos的内核实现机制 最近一个月 xff0c 抽了点时间将freertos和rtthread的内核代码看了下 xff0c 了解了实时系统的实现机制和设计思想 这里学习free
  • FlashDB移植与应用

    FlashDB移植与应用 最近工作需要 xff0c 对设备参数进行备份存储 xff0c 由于之前使用的是简单的分区备份方法 Easyflash的单实例不再适用 后面发现大神基于easyflash进行了新版本更新 xff0c 但是不向前兼容
  • ROBOMASTER机甲大师赛视觉组学习方案

    ROBOMASTER机甲大师赛视觉学习方案 视觉技能学习踩坑硬件平台环境配置个人修为坑 机甲大师 xff08 RoboMaster xff09 是由大疆创新 xff08 DJI xff09 的创始人汪滔发起并承办 由共青团中央 全国学联 深
  • (一)HTML5 基础

    文章目录 一 HTML 简介二 HTML5 骨架1 文档类型说明2 W3C 组织3 标签4 html 标签对5 head 标签对 1 meta 标签对 2 title 标签对 3 SEO 6 body 标签对 三 文字标签1 标题标签2 段
  • 程序员真的是我们喜欢的工作吗?是生活?还是理想?

    有人说程序员年薪近百万 xff01 程序员 成实现阶级跨越的好职业 xff1f 在大多数人的印象里 xff0c 程序员是非常具有 钱途 的职业 xff0c 年薪至少几十万 半年赚一套房 要嫁就嫁程序员 等类似的消息满天飞 xff0c 足见程
  • C盘被pycharm的缓存数据占满,清理content.dat.storageData

    当你用PyCharm跑一些特殊的程序时 xff0c 你会发现你的C盘容量减少或被占满 xff0c 那么如何找到那些缓存数据并释放C盘的磁盘空间呢 xff1f 我是采用下面的方法 xff1a 先下载一个磁盘扫描软件 xff0c 我用的是Spa
  • C++ 链表构建与基本操作

    本文没啥干货 xff0c 纯属笔记 xff0c 建议出门左拐哈 目录 1 创建单向链表 2 在链表结尾添加元素 3 从链表中删除第一个值为 val 的元素 4 测试用例 1 创建单向链表 单向链表可以使用结构体的形式创建 xff0c 定义一
  • cmake:设置编译选项的讲究(add_compile_options和CMAKE_CXX_FLAGS的区别) 转自CSDN

    https blog csdn net 10km article details 51731959 cmake 设置编译选项的讲究 add compile options和CMAKE CXX FLAGS的区别 2016年06月22日 09