make、makefile和cmake的关系
提到make,makefile就不得不提GNU,GNU是“GNU’s Not Unix”的递归缩写,代表一套向上兼容Unix的完全自由的操作系统。开发GNU系统的工程叫做“GNU工程”。 GNU工程并不限于核心操作系统。目标是提供一个完整的软件系列。很多人记住了Linus Torvalds,但并不知道Stallman是谁。Linus开发了Linux,而Stallman是GNU的早期发起者。将Linux与GNU系统结合在一起就是一个完全的操作系统:GNU/Linux系统。顺便一提,MinGW是 "Minimalist GNU for Windows"的缩写, 是Windows操作系统下最小GNU开发环境,提供完整的开发工具集,包含gcc、g++和gfortran等编译器。
在大型工程项目中,源文件成千上万,由于文件之间复杂的依赖关系,直接使用命令行编译大型工程项目是不现实的,此时,makefile应运而生。如何修改了哪个文件,就编译修改的那个文件,而不是重新编译整个工程。通俗来说,makefile是一种脚本语言,make是makefile的解释器。makefile拥有特定的语法规则,规定了文件编译的先后顺序,同时可以集成操作系统的各种命令。
makefile的基本格式为:
target:dependency
command
target:目标文件
dependency:依赖文件
command:根据命令由依赖文件生成目标文件
makefile一定程度上实现了工程自动化,但是makefile存在跨平台的问题,不同平台的makefile不同,需要重新编写,所以出现cmake,自动生成makefile。
cmake安装
使用源码安装方式
1、下载源码
wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
2、解压
tar -xvzf cmake-2.8.10.2.tar.gz
3、进入解压目录
cd cmake-2.8.10.2
4、指定安装位置
./configure --prefix=/opt/module/cmake
5、编译
gmake
6、安装
gmake install
可以卸载
使用gmake uninstall
配置环境变量
source /etc/profile
执行命令cmake -version显示版本号,表示安装成功。
cmake简单示例
1、在目录mktest下创建hello.c 和CMakeLists.txt文件和build目录
CMakeLists.txt文件内容
cmake_minimum_required (VERSION 2.8)
project (hello)
add_executable(hello hello.c)
2、在build目录下执行cmake …(指定CMakeLists.txt文件和生成的makefile文件的位置),生成makefile文件
3、在build目录下执行make命令,生成可执行文件hello
4、运行可执行文件hello