[BuildRelease]跨平台构建工具Cmake

一 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的列表:

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】实例文件结构如下:

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如下:

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

 

五语法

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 

 

完!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值