Cmake项目构建工具
就是组织和管理工程代码的工具
目的:使项目代码层次结构清晰易读,对以后的维护工作大有裨益
决定代码的组织方式及其编译方式,也是程序设计的一部分,cmake和autotools正是makefile的上层工具,它们的目的正是为了产生可移植的makefile,并简化自己动手写makefile时的巨大工作量.
写makefile通常依赖于当前的编译平台,并且编写makefile的工作量比较大.解决依赖关系时也容易出错.因此对于大多数项目,应当考虑使用更自动化一些的cmake或者autotools来生成makefile,而不是上来就动手编写.
特点:
1 开放源代码,使用类BSD许可发布;
2 跨平台,并可生成native编译配置文件,在linux/unix平台,生成makefile,在苹果平台,可以生成xcode,在windows平台,可以生成msvc的工程文件;
3 能够管理大型项目;
4 简化编译构建过程和编译过程.cmake的工具链非常简单:cmake+make.
5 高效率;
6 可拓展.
安装:
linux的ubuntu下安装cmake
下载源码包:
http://www.cmake.org/cmake/resources/software.html
随便找个目录安装,别在/tmp等tmpfd文件系统的目录下就行
tar -xvfz cmake-2.6.4.tar.gz
cd cmake-2.6.4
依次执行:
./bootstrap
这一步会挺久的,大概5分多种
make
make也挺久的
make install
cmake会默认安装在/usr/local/bin下面
从”hello world”开始
1 在opt/wkplace/下面新建hello目录;
2 在该hello目录下面建立一个main.c文件,内容就打印hello world即可;
3 在该hello目录下面新建一个文件CMakeList.txt.这个就是cmake所处理的代码.使用cmake管理项目本身也是在编程,所以称之为”脚本”也不为过.内容为:
cmake_minimum_required(version 2.6)
project(hello)
add_executable(hello main.c)
4 wq退出后,直接执行cmake .
5 生成makefile文件,直接make,就生成了你想要的执行文件.
这样的做法属于内部编译方式.有一个巨大的缺点,对于有代码洁癖的人来说,这种做法会将所有生成的中间文件和源代码混合在一起,而且cmake生成的makefile无法跟踪所有的中间文件,既无法使用”make distclean”命令将所有的中间文件删除.因此推荐建立build目录进行编译,所有的中间文件都会生成在build目录下面.需要删除时直接清空该目录即可.这就是所谓的外部编译方式.
外部编译方式:
1 2 步不变化,在CMakeList.txt文件添加
aux_source_directory(. SRC_LIST)
注意.号与SRC_LIST之间必须有空格隔开
将add_executbale(hello ${SRC_LIST})即可.
4 在该hello目录下新建build目录.直接cmake …
即可在build目录下生成所有的中间文件以及makefile,直接make,生成想要的可执行文件,这样层次清晰,代码洁净.
cmake的基本配置CMakeList.txt参数说明
CMakeLists.txt 的语法比较简单,由命令、注释和空格组成,其中命令是不区分大小写的,符号"#"后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔
cmake_minumum_required(version 3.14)
cmake最低版本需求.只要不高于你使用的当前版本即可,当大于当前版本时,显示错误:
当然也可以不写,但是会出现警告.
project(HELLO)
仅仅是项目名称,但是不可缺
aux_source_directory(. src_list)
把当前目录下(.)所有源代码文件和头文件加入变量src_list
add_executable(hello ${src_list})
生成应用程序hello
- 编写 CmakeLists.txt。
- 执行命令“cmake PATH”或者“ccmake PATH”生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。
- 使用 make 命令进行编译。