cmake检测编译环境

cmake检测编译环境

cmake检测编译环境就是检测当前编译工程的环境是否满足工程的需要,这包括

1. 编译器的版本,如gcc

2. cmake的版本

3. 需要的一些库

前两者不在这里叙述,比较简单,这里说说如何检测第三个。检测第三个有3个方法,

a)使用find_package

b)使用check_include_file

c)使用check_function_exists

比较推荐第一个,因为但凡我们要找的库都是… 更多... “cmake检测编译环境”

gcc 禁止warning

gcc 禁止warning

 

熟悉windows编程的人都知道,禁止编译器输出某个warning,在代码中可以这样

#pragma warning( disable 号码)

例如

#pragma warning(disable 4096)

这里的4096是warning的号码,

在gcc中warning是直接使用名字代表,而不是数字,例如 未使用的变量的 warning就是

-Wunused-variable

gcc的… 更多... “gcc 禁止warning”

CMake之RPath

CMake之RPath

 

其实rpath并不是定义或者发明的,这个东西是linux的东西,为什么把它和CMake放在一起讨论呢?是因为鄙人之前一直用手写Makefile来管理和编译工程,但是如今使用CMake,结果发现编译出来的可执行文件的链接到绝对路径的动态库,这样可执行文件就不可以拷贝到别的机器执行了,而之前使用makefile就没有这个问题。

[xxx@localhost src]$ ld… 更多... “CMake之RPath”

CMake的CPack

CMake的CPack

 

CMake不仅可以用来管理工程,编译,安装,还可以制作安装包,安装包可以是压缩包还可以是rpm包。

下面利用一个简单的例子来解释如何使用CMake的cpack制作安装包

工程名 = Speaker

目录结构

Speaker +

             … 更多... “CMake的CPack”

CMake的install

CMake的install

 

CMake不止可以用来管理工程,编译工程,还可以安装工程。就是用install命令,但是记住他是cmake的命令,所以不要直接把它当作是一个linux的命令,那样就和linux的install命令混淆了,linux自带一个install命令,它和cp相类似。cmake的install命令可以按照下面的方式使用:

$ cmake ../

$ make install

看完上面… 更多... “CMake的install”

为代码优化提供证据和代码覆盖度

为代码优化提供证据和代码覆盖度

2个工具联合起来实现这一功能:

  • gcov
  • lcov

第一个是根据代码生成结果

第二个工具根据第一个工具产生的结果生成可视化的结果。

 

下载和说明

gcov:

https://gcc.gnu.org/onlinedocs/gcc/Gcov.html

lcov:

http://ltp.sourceforge.net/coverage/lcov.php

 

使用方法

假设你有代… 更多... “为代码优化提供证据和代码覆盖度”

linux core dump文件的分析

Core,又称之为Core
Dump文件,是Unix/Linux操作系统的一种机制,对于线上服务而言,Core令人闻之色变,因为出Core的过程意味着服务暂时不能正常响应,需要恢复,并且随着吐Core进程的内存空间越大,此过程可能持续很长一段时间(例如当进程占用60G+以上内存时,完整Core文件需要15分钟才能完全写到磁盘上),这期间产生的流量损失,不可估量。

凡事皆有两面性,OS在出Core的同时… 更多... “linux core dump文件的分析”