一 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

完!

转载于:https://www.cnblogs.com/itech/archive/2011/09/14/2176234.html

[BuildRelease]跨平台构建工具Cmake相关推荐

  1. cmake跨平台构建工具

    目录 前言 跨平台开发 CMake语法特性 CMake重要指令和常用变量 重要指令 常用变量 CMake编译工程 两种构建方式 编译实战 **CMakeLists.txt** 内部构建 外部构建 小结 ...

  2. linux java 构建工具有哪些,Linux ant --强大的Java开发构建工具

    用途说明 ant严格说来,ant其实并非原生的Linux命令,但它是一个使用广泛.功能强大的跨平台构建工具程序,尤其是进行Java开发时,许多开源的Java项目都使用ant作为构建工具.ant命令一般 ...

  3. c++构建工具之shell,configure,make,cmake,scons,xmake简析总结

    前言 说到编译工具,在windows下必言vs,在linux下必言make. 0.shell 如果编译一个库的命令太复杂或者为了方便,我们更愿意将编译命令写成一个shell脚本来执行,比如build. ...

  4. Windows 10 上使用 CMake GUI 编译 Krita 源代码并使用 MinGW 64 作为构建工具

    krita系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参 ...

  5. WEB跨平台桌面程序构建工具对比(Electron、Tauri、Wails)

    楔子 WEB 跨平台 桌面应用程序 顾名思义就是用 JavaScript.HTML.CSS 等前端技术构建跨平台的桌面应用,WEB 负责 GUI 渲染并与后端(如 Node.js.Python.Rus ...

  6. 【CMake】CMake 引入 ( Android Studio 创建 Native C++ 工程 | C/C++ 源码编译过程 | Makefile 工具 | CMake 引入 )

    文章目录 一.在 Android Studio 中创建 Native C++ 工程 二.C/C++ 源码编译过程 三.Makefile 工具 四.CMake 引入 该系列博客的应用场景是 Androi ...

  7. cmake:命令行工具cmake

    概要 Generate a Project Buildsystemcmake [<options>] <path-to-source>cmake [<options> ...

  8. CLion工具(cmake) 快速开始

    文章目录 一.CLion工具 介绍 二.CLion开发编译调试Makefile项目 三.Win10下Clion的配置以及使用 1. Clion 配置Cygwin 开发环境(不推荐) 2. 使用Clio ...

  9. 下一代构建工具 Gradle ,比 Maven 强在哪里!

    作者 :乐百川 本文:toutiao.com/i6824937779193971207 相信使用Java的同学都用过Maven,这是一个非常经典好用的项目构建工具.但是如果你经常使用Maven,可能会 ...

最新文章

  1. html标签的赋值与取值
  2. 微服务为什么一定要选spring cloud?
  3. 最大熵的Java实现
  4. 计算机丢失ac1st.dll怎么找回,CAD提示ac1st16.dll丢失修复步骤
  5. 区分Activity的四种加载模式
  6. unity 2020 怎么写shader使其接受光照?_如何在Unity中造一个PBR Shader轮子
  7. python做collatz猜想_R中的Collatz猜想
  8. linux 通过虚拟ip出路由器,linux模拟路由器实验
  9. linux ps用法大全,linux 性能篇 -- ps的用法
  10. [原创] IAR7.10安装注册教程
  11. java dll 调用方法_关于Java调用dll的方法 | 学步园
  12. 阿里巴巴2020首发136道Java高级岗面试题(含答案)
  13. 人工智能助力复工复产,模版OCR轻松搞定健康码识别
  14. 服务器只识别2t硬盘,网吧用2008R2服务器系统不认2T以上单个硬盘?
  15. 热爱生命 - 汪国真
  16. 《UNIX/LINUX系统管理I》课程学习总结
  17. 网站访客QQ获取系统
  18. (80)FPGA减法器设计(全减法器)
  19. 构建和管理有效API市场的关键步骤
  20. Java项目:ssm+mysql医药进销存系统

热门文章

  1. @SentinelResource使用
  2. 给定数组 求和等于固定值 算法_别人家的面试题:不可变数组快速范围求和
  3. mysql多字段修改update_MySQL ------ 触发器(TRIGGER)(二十七)
  4. an tu tu html5 test,Design an Accuracy Test System for Resolver-To-Digital Converter Based on PXI
  5. c3p0 高并发mysql 连接sleep情况
  6. 马赛克,克星,真来了!
  7. TensorFlow的新生!
  8. 计算机硬件实验代码转换,计算机硬件实验指导书(17页)-原创力文档
  9. 星外php使用教程_星外PHP5.2.17自动配置一键安装包 防phpdos v1.4
  10. Matlab第二章选择题填空题,matlab及其在大学物理中的应用第二章习题答案.doc