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)

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

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

随机推荐

  • Linux VNC server 安装配置

    1 安装vnc server root 64 pxe yum install tigervnc server y 2 设置 vnc server 开机启动 root 64 pxe chkconfig vncserver on 3 修改vnc
  • 常用非关系型数据库产品介绍

    1 memcache memcache xff08 键值型数据库 xff09 memcache是把访问的数据存在内存里面 xff0c 外部访问现在内存里面找 xff0c 找不到再从数据库里面找 xff0c 可以减轻数据库的压力 xff0c
  • Webpack 4.X 从入门到精通 - devServer与mode(三)

    上一篇文章里详细介绍了一下插件的用法 xff0c 这一篇文章接着丰富module exports里的属性 如今的前端发展已经非常迅速了 xff0c 伴随而来的是开发模式的转变 现在已经不再是写个静态页面并放在浏览器里打开预览一下了 在实际的
  • 块状元素与内联元素的区别

    css中块状元素是一个重要的知识点 xff0c css下height和width不起作用使我们经常遇到的问题 xff0c 这就需要我们正确区分块状元素和内联元素 块状元素和内联元素的区分很简单 xff0c 我们只需要注意html元素是否排斥
  • vsftp 锁定用户目录

    vsftp 安装以后给用户权限和锁定目录 xff1b 关闭SELinux xff1a 修改 etc selinux config文件中的SELINUX 61 34 34 为 disabled xff0c 然后重启 如果不想重启系统 xff0
  • 解决使用WinScp连接Ubantu系统失败的问题---SSH无法连接

    起因 为了互通Linux系统和Windows系统的文件 xff0c 以更好的实现文件管理和资源共享 所以在查阅资料后 xff0c 使用WinScp xff0c WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端 它的
  • 一文让你明白CPU上下文切换

    我们都知道 xff0c Linux 是一个多任务操作系统 xff0c 它支持远大于 CPU 数量的任务同时运行 当然 xff0c 这些任务实际上并不是真的在同时运行 xff0c 而是因为系统在很短的时间内 xff0c 将 CPU 轮流分配给
  • HBase shell scan 过滤器用法总结

    比较器 xff1a 前面例子中的regexstring 2014 11 08 binary x00 x00 x00 x05 xff0c 这都是比较器 HBase的filter有四种比较器 xff1a xff08 1 xff09 二进制比较器
  • [Ubuntu] LightDM 轻量级桌面显示管理器

    LightDM xff08 Light Display Manager xff09 是一个全新的轻量级 Linux 桌面显示管理器 xff0c 而传统的 Ubuntu 是使用 GNOME 桌面标准的 GDM LightDM 是一个跨桌面显示
  • 算法笔记--区间素数筛

    筛 l r 之间的合数 l lt 61 r lt 61 1e12 r l lt 61 1e6 筛小于等于r的合数所需的质因子大小最多不会超过根号r xff08 lt 61 1e6 xff09 模板 const int N 61 1e6 43
  • 使用Formik轻松开发更高质量的React表单(四)其他几个API解析

    旧话重提 前文中我特别提起Redux Form以及redux form的问题 xff0c 我觉得学习Formik你不得不提它们 xff0c 当然还有它们的 老祖宗 React xff1b 既然选择了 xff0c 那么你必须按照这个方向走下去
  • Linuxmint-mate (Ubuntu) 远程连接配置

    不慎搞崩了一台 Ubuntu 服务器 xff0c 本文记录重装系统 远程桌面系统 SSH 系统 用户配置等过程 选择系统 xff1a linuxmint 18 1 mate 优点 xff1a 兼容 Ubuntu 16 04 更加可控 xff
  • linux脚本数组元素赋值,shell 数组赋值

    shell编程 xff0c 给数组赋值及两个数组初始化与比较 bin sh output files 61 cat outfiles for i 61 0 i lt output files 64 43 43 i do echo 34 ar
  • 【独家】一文读懂数据可视化

    前言 数据可视化 xff0c 是指将相对晦涩的的数据通过可视的 交互的方式进行展示 xff0c 从而形象 直观地表达数据蕴含的信息和规律 早期的数据可视化作为咨询机构 金融企业的专业工具 xff0c 其应用领域较为单一 xff0c 应用形态
  • 【知云】第三期:云计算的弹性体现在哪些方面?

    摘要 xff1a 很多用户非常想了解云计算的弹性体现在哪些方面 xff1f 本文中云计算布道师倪波 xff08 花名 xff1a 竹雾 xff09 就为大家进行答疑解惑 xff0c 谈一谈云计算所提供的计算 存储以及网络方面的弹性 想要看视
  • 计算机网络第1章(概述)

    计算机网络第1章 xff08 概述 xff09 1 1因特网概述1 网络 互连网 xff08 互联网 xff09 和因特网2 因特网发展的三个阶段3 因特网的标准化工作4 因特网的组成 1 2 三种交换方式1 电路交换 xff08 Circ
  • 液晶显示器点屏方法步骤及参数表

    一 一 六大主要电压 面板的六项所需的基本电压 面板将输入的电压转成所需的电压 1 VIN xff1a 3 3V 5 0V 12V 基本输入电源 2 VDDD xff1a 3 3V 各IC所需的电源电压 xff0c 电源IC 3 VDDG
  • 常用nodejs版本管理

    nodejs管理版本的模块叫 n 首先安装n模块 xff1a npm install g n n后面也可以跟随版本号 n v4 2 4 另外几个常用命令 npm v 显示版本 xff0c 检查npm 是否正确安装 npm install e
  • plink源码_Debian -- 在 sid 中的 plink 软件包详细信息

    whole genome association analysis toolset plink expects as input the data from SNP single nucleotide polymorphism chips
  • 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