一 CMake

CMake 是一个跨平台的构建工具,通过一次的cmake script的编写,能够生成常见平台常见IDE的project文件或maikefile文件,例如生成visual studio project文件,eclipse project文件,makefile等;同时相对于linux的automake工具生成makefile的过程相对简单。

 

主页:​​http://www.cmake.org/​

参考:​​http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/index.html​

Eclipse 插件:​​http://www.cthing.com/CMakeEd.asp​


二 特点:

1)配置文件是cmake script,cmake script是特定于software build的专用编程语言;

2)内置的对c,c++,java,fortran的依赖的分析;

3)通过cmake script支持swig,qt,fltk;

4)支持几乎所有的IDE工程文件或makefile的生成,例如visual studio 6-10,eclipse cdt等;

6)使用传统的时间戳来检测文件内容的改变;

7)支持并行build;

8)依赖的globle view,可以使用cmake产生依赖图;

9)支持cross compiler。

10)支持几乎所有的平台;

11)与ctest,cpack,cdash 集成;

 

三 CMake的generators

1)cmake在windows上的generator的列表:

[BuildRelease]跨平台构建工具Cmake_unix

2) Linux下generator:

The following generators are available on this platform:

  Unix Makefiles              = Generates standard UNIX makefiles.

  CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.

  Eclipse CDT4 - Unix Makefiles   = Generates Eclipse CDT 4.0 project files.

  KDevelop3                   = Generates KDevelop 3 project files.

  KDevelop3 - Unix Makefiles  = Generates KDevelop 3 project files.


3)参考:http://www.cmake.org/Wiki/CMake_Generator_Specific_Information

 

四 实例

1)过程简单描述

# 编写 CmakeLists.txt。
# 执行命令 “cmake PATH” 生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。
# 使用 make 命令进行编译。 

2)简单实例(在windows上编译sample工程)

1】实例文件结构如下:

[BuildRelease]跨平台构建工具Cmake_eclipse_02

2】main.cpp如下:


#include<iostream>

int main()
{
std::cout<<"Hello word!"<<std::endl;
return 0;
}


 3】Cmakelists.txt如下:


project(Sample)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. DIR_SRCS)
add_executable(Sample ${DIR_SRCS})


 4】cmakefiles.txt的解释:

"#"后面的内容为注释。
命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。
PROJECT(sample)命令用来表示项目名称为smaple。
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)用来限定需要cmake2.6的版本。
aux_source_directory(<dir> <variable>)该命令会把参数 <dir> 中所有的源文件名称赋值给参数 <variable>。
ADD_EXECUTABLE(sample ${DIR_SRCS})表示将变量 DIR_SRCS 中的源文件编译成一个名称为sample的可执行文件。

5】生成VS工程文件和build如下:

[BuildRelease]跨平台构建工具Cmake_linux_03

6】生成Eclipse+MinGW的工程文件如下:

[BuildRelease]跨平台构建工具Cmake_eclipse_04

 

五语法

ADD_SUBDIRECTORY( src )指明本项目包含一个子目录 src 。

TARGET_LINK_LIBRARIES( main Test )指明可执行文件 main 需要连接一个名为Test的链接库 。

六参考

​http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/​

​http://en.wikipedia.org/wiki/CMake ​

 


作者:​​iTech​

微信公众号: cicdops

github:​​https://github.com/cicdops/cicdops​

[BuildRelease]跨平台构建工具Cmake_eclipse_05