接触c++也不是很长,但是在写工程的时候CMakeLists.txt写的不规范,会使得测试程序无法编译成功,特此开一篇博客专门写一些cmake中常用的一些命令,这样一来可以做个总结,第二个下次使用也便于查找,相当于自己慢慢建立一个cmake的命令手册吧!
LZ现在写CMakeLists.txt的时候有一个小技巧可以分享给大家,就是在链接库比较多,对于LZ这种新手来说可能会写的不是特别正确,这时,在main.cpp中可以先把相关的库进行include,然后主函数输出个hello world!,如果能通过编译,就能确保对应依赖项添加正确,然后再增加主函数的代码。。。可能有点傻,这个方法,但是对于新手写CMakeLists.txt还是很有效的O(∩_∩)O
1.添加c++11标准支持
#注意等式左右两端不要加空格
set(CMAKE_CXX_FLAGS "-std=c++11")
#有的时候可能会遇到,一定要注意是大写的O,不是数字0
set(CMAKE_CXX_FLAGS "-std=c++11 -O3")
其中,参数CMAKE_CXX_FLAGS含义是: set compiler for c++ language
而后面的-O3(是字母opq的o,大写的欧)是用来调节编译时的优化程度的,最高为-O3,最低为-O0(即不做优化)
-Ox这个参数只有在CMake -DCMAKE_BUILD_TYPE=Release时有效,因为debug 版的项目生成的可执行文件需要有调试信息并且不需要进行优化,而 release 版的不需要调试信息但需要优化。
2.制定cmake的最低版本
#定义cmake的最低版本时2.8
cmake_minimun_required(VERSION 2.8)
可以在终端中查看cmake的版本
cmake -version
#输出如下
cmake version 3.2.2
这里需要注意两点,如果不定义需要的版本可能会报个warning,如果有强迫症或者追求完美,还是把这行代码写上吧。第二点,不要定义的版本比自己安装的版本还高,那样估计就是直接编译不通过了。。。
3.定义工程名称
#定义工程的名称叫felaim,LZ这里是随意写的,小伙伴们也可以自行定义
project(felaim)
4.指定安装地址
第一种方式:
使用 CMAKE_INSTALL_PREFIX 来指定
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
第二种方式:
修改cmake文件,加入:
SET(CMAKE_INSTALL_PREFIX < install_path >)
其实还有好多,但是时间有限,先写一部分,后续待LZ慢慢补上哈O(∩_∩)O