当前位置: 首页 > news >正文

CMake指令解析 set(CMAKE_CXX_FLAGS “$ENV{CXXFLAGS} -rdynamic -O3 -fPIC -ggdb -std=c++11 -Wall -Wno-deprec

完整代码

set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} -rdynamic -O3 -fPIC -ggdb -std=c++11 -Wall -Wno-deprecated -Werror -Wno-unused-function -Wno-builtin-macro-redefined -Wno-deprecated-declarations")

1、CMAKE_CXX_FLAGS

这种大写的变量,一般都是CMake预定义的内建变量,且他们是全局的。该变量可用于设置编译选项。直接使用set修改其值即可。

除了修改该变量的值之外,还可以通过add_compile_options命令来设置编译选项。它们的区别是:
add_compile_options命令添加的编译选项是针对所有编译器的(包括c和c++编译器)
CMAKE_C_FLAGSCMAKE_CXX_FLAGS变量则是分别只针对c和c++编译器

2、$ENV{}

$ENV{}用于获取环境变量设置环境变量的方法是:

set(ENV{变量名})

3、CXXFLAGS

CXXFLAGS是C++编译器的编译选项。
在这里插入图片描述

4、-rdynamic

-rdynamic编译选项通知链接器将所有符号添加到动态符号表中。(目的是能够通过使用 dlopen 来实现向后跟踪)
gcc选项-g与-rdynamic的异同

5、-O3

-O3是一个优化选项,告诉编译器优化我们的代码。
gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化

6、-fPIC

-fPIC 作用于编译阶段,告诉编译器产生与位置无关代码,即,产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。
gcc编译参数-fPIC的一些问题

7、-ggdb

-ggdb选项使编译器生成gdb专用的更为丰富的调试信息。
gcc 的 -g 和 -ggdb 选项

8、-std=c++11

-std=c++11设置为使用C++11标准

9、-Wall

-Wall选项告诉编译器 编译后显示所有警告。
gcc中的-w -W和-Wall选项

10、-Wno-deprecated

不要警告使用已弃用的功能

11、-Werror

告诉编译器视所有警告为错误,出现任何警告立即放弃编译

12、-Wno-unused-function

关闭 函数被定义了但没有被使用 而产生的警告,即,不使用的函数不警告。

13、-Wno-builtin-macro-redefined

如果某些内置宏被重新定义,请不要警告。这抑制了警告的重新定义__TIMESTAMP__,TIMEDATEFILE,和__BASE_FILE__。

14、-Wno-deprecated-declarations

关闭使用废弃API的警告。
gcc警告选项汇总,这篇文章贼全面

相关文章:

  • 记一个测试sylar服务器日志模块时遇到的一个非常奇怪的问题
  • syscall()
  • 记一个编写宏时的错误
  • C++中全局变量,静态变量,静态局部变量 的初始化和内存分配问题
  • C++ 模板实现单例模式
  • 《C++ Primer》 异常
  • C++父类和子类指针的相互赋值和转换
  • 算法设计与分析————期末死亡冲刺
  • 现代软件工程————期末死亡冲刺
  • std::string::npos 常量解析
  • 练习4-3 求给定精度的简单交错序列部分和 (15 分)本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。
  • 浙大版《C语言程序设计(第4版)》题目集 练习4-6 猜数字游戏 (15 分)
  • 练习4-7 求e的近似值 (15 分)自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。
  • 数组输入输出的方法
  • 习题:贴邮票
  • CentOS6 编译安装 redis-3.2.3
  • Flex布局到底解决了什么问题
  • JavaScript学习总结——原型
  • markdown编辑器简评
  • PAT A1092
  • React16时代,该用什么姿势写 React ?
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 对象管理器(defineProperty)学习笔记
  • 给第三方使用接口的 URL 签名实现
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 前端面试题总结
  • 使用SAX解析XML
  •  一套莫尔斯电报听写、翻译系统
  • 自定义函数
  • MyCAT水平分库
  • 阿里云ACE认证学习知识点梳理
  • 组复制官方翻译九、Group Replication Technical Details
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​渐进式Web应用PWA的未来
  • (2)nginx 安装、启停
  • (6)STL算法之转换
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .gitignore文件---让git自动忽略指定文件
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [100天算法】-x 的平方根(day 61)
  • [20181219]script使用小技巧.txt
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [ASP]青辰网络考试管理系统NES X3.5
  • [c++] 什么是平凡类型,标准布局类型,POD类型,聚合体
  • [Flutter] extends、implements、mixin和 abstract、extension的使用介绍说明