cmake检测编译环境
cmake检测编译环境就是检测当前编译工程的环境是否满足工程的需要,这包括
1. 编译器的版本,如gcc
2. cmake的版本
3. 需要的一些库
前两者不在这里叙述,比较简单,这里说说如何检测第三个。检测第三个有3个方法,
a)使用find_package
b)使用check_include_file
c)使用check_function_exists
比较推荐第一个,因为但凡我们要找的库都是… 更多... “cmake检测编译环境”
IT夜班车
cmake检测编译环境就是检测当前编译工程的环境是否满足工程的需要,这包括
1. 编译器的版本,如gcc
2. cmake的版本
3. 需要的一些库
前两者不在这里叙述,比较简单,这里说说如何检测第三个。检测第三个有3个方法,
a)使用find_package
b)使用check_include_file
c)使用check_function_exists
比较推荐第一个,因为但凡我们要找的库都是… 更多... “cmake检测编译环境”
熟悉windows编程的人都知道,禁止编译器输出某个warning,在代码中可以这样
#pragma warning( disable 号码)
例如
#pragma warning(disable 4096)
这里的4096是warning的号码,
在gcc中warning是直接使用名字代表,而不是数字,例如 未使用的变量的 warning就是
-Wunused-variable
gcc的… 更多... “gcc 禁止warning”
linux默认加载动态库的路径是 /lib或者是/lib64, 32位的系统是前者,64位是后者。
如果找不到还有3个地方
通过设置LD_LIBRARY_PATH环境变量方式,让系统在这个环境变量设置的路径查找动态库。
$> export LD_LIBRARY_PATH=$LD_LIBRARY_P… 更多... “Linux查找动态库的3种方法”
其实rpath并不是定义或者发明的,这个东西是linux的东西,为什么把它和CMake放在一起讨论呢?是因为鄙人之前一直用手写Makefile来管理和编译工程,但是如今使用CMake,结果发现编译出来的可执行文件的链接到绝对路径的动态库,这样可执行文件就不可以拷贝到别的机器执行了,而之前使用makefile就没有这个问题。
[xxx@localhost src]$ ld… 更多... “CMake之RPath”
CMake不仅可以用来管理工程,编译,安装,还可以制作安装包,安装包可以是压缩包还可以是rpm包。
下面利用一个简单的例子来解释如何使用CMake的cpack制作安装包
工程名 = Speaker
目录结构
Speaker +
 … 更多... “CMake的CPack”
下面的文字是摘自:
RPM Command: 15 Examples to Install, Uninstall, Upgrade, Query RPM Packages
非常全面的用例子的方式解释各个rpm的命令参数,懒得翻译了,就直接上原文了。
RPM command is used for installing, uninstalling, upgrading, querying, listing, and … 更多... “RPM的安装,卸载,更新和查询”
CMake不止可以用来管理工程,编译工程,还可以安装工程。就是用install命令,但是记住他是cmake的命令,所以不要直接把它当作是一个linux的命令,那样就和linux的install命令混淆了,linux自带一个install命令,它和cp相类似。cmake的install命令可以按照下面的方式使用:
$ cmake ../
$ make install
看完上面… 更多... “CMake的install”
以下文字全部摘抄在cmake的官网
————————————————–
Below is a step-by-step tutorial covering
2个工具联合起来实现这一功能:
第一个是根据代码生成结果
第二个工具根据第一个工具产生的结果生成可视化的结果。
gcov:
https://gcc.gnu.org/onlinedocs/gcc/Gcov.html
lcov:
http://ltp.sourceforge.net/coverage/lcov.php
假设你有代… 更多... “为代码优化提供证据和代码覆盖度”
Core,又称之为Core
Dump文件,是Unix/Linux操作系统的一种机制,对于线上服务而言,Core令人闻之色变,因为出Core的过程意味着服务暂时不能正常响应,需要恢复,并且随着吐Core进程的内存空间越大,此过程可能持续很长一段时间(例如当进程占用60G+以上内存时,完整Core文件需要15分钟才能完全写到磁盘上),这期间产生的流量损失,不可估量。
凡事皆有两面性,OS在出Core的同时… 更多... “linux core dump文件的分析”