[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如下:
int main()
{
std::cout<<"Hello word!"<<std::endl;
return 0;
}
3】Cmakelists.txt如下:
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相关推荐
- cmake跨平台构建工具
目录 前言 跨平台开发 CMake语法特性 CMake重要指令和常用变量 重要指令 常用变量 CMake编译工程 两种构建方式 编译实战 **CMakeLists.txt** 内部构建 外部构建 小结 ...
- linux java 构建工具有哪些,Linux ant --强大的Java开发构建工具
用途说明 ant严格说来,ant其实并非原生的Linux命令,但它是一个使用广泛.功能强大的跨平台构建工具程序,尤其是进行Java开发时,许多开源的Java项目都使用ant作为构建工具.ant命令一般 ...
- c++构建工具之shell,configure,make,cmake,scons,xmake简析总结
前言 说到编译工具,在windows下必言vs,在linux下必言make. 0.shell 如果编译一个库的命令太复杂或者为了方便,我们更愿意将编译命令写成一个shell脚本来执行,比如build. ...
- Windows 10 上使用 CMake GUI 编译 Krita 源代码并使用 MinGW 64 作为构建工具
krita系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参 ...
- WEB跨平台桌面程序构建工具对比(Electron、Tauri、Wails)
楔子 WEB 跨平台 桌面应用程序 顾名思义就是用 JavaScript.HTML.CSS 等前端技术构建跨平台的桌面应用,WEB 负责 GUI 渲染并与后端(如 Node.js.Python.Rus ...
- 【CMake】CMake 引入 ( Android Studio 创建 Native C++ 工程 | C/C++ 源码编译过程 | Makefile 工具 | CMake 引入 )
文章目录 一.在 Android Studio 中创建 Native C++ 工程 二.C/C++ 源码编译过程 三.Makefile 工具 四.CMake 引入 该系列博客的应用场景是 Androi ...
- cmake:命令行工具cmake
概要 Generate a Project Buildsystemcmake [<options>] <path-to-source>cmake [<options> ...
- CLion工具(cmake) 快速开始
文章目录 一.CLion工具 介绍 二.CLion开发编译调试Makefile项目 三.Win10下Clion的配置以及使用 1. Clion 配置Cygwin 开发环境(不推荐) 2. 使用Clio ...
- 下一代构建工具 Gradle ,比 Maven 强在哪里!
作者 :乐百川 本文:toutiao.com/i6824937779193971207 相信使用Java的同学都用过Maven,这是一个非常经典好用的项目构建工具.但是如果你经常使用Maven,可能会 ...
最新文章
- html标签的赋值与取值
- 微服务为什么一定要选spring cloud?
- 最大熵的Java实现
- 计算机丢失ac1st.dll怎么找回,CAD提示ac1st16.dll丢失修复步骤
- 区分Activity的四种加载模式
- unity 2020 怎么写shader使其接受光照?_如何在Unity中造一个PBR Shader轮子
- python做collatz猜想_R中的Collatz猜想
- linux 通过虚拟ip出路由器,linux模拟路由器实验
- linux ps用法大全,linux 性能篇 -- ps的用法
- [原创] IAR7.10安装注册教程
- java dll 调用方法_关于Java调用dll的方法 | 学步园
- 阿里巴巴2020首发136道Java高级岗面试题(含答案)
- 人工智能助力复工复产,模版OCR轻松搞定健康码识别
- 服务器只识别2t硬盘,网吧用2008R2服务器系统不认2T以上单个硬盘?
- 热爱生命 - 汪国真
- 《UNIX/LINUX系统管理I》课程学习总结
- 网站访客QQ获取系统
- (80)FPGA减法器设计(全减法器)
- 构建和管理有效API市场的关键步骤
- Java项目:ssm+mysql医药进销存系统
热门文章
- @SentinelResource使用
- 给定数组 求和等于固定值 算法_别人家的面试题:不可变数组快速范围求和
- mysql多字段修改update_MySQL ------ 触发器(TRIGGER)(二十七)
- an tu tu html5 test,Design an Accuracy Test System for Resolver-To-Digital Converter Based on PXI
- c3p0 高并发mysql 连接sleep情况
- 马赛克,克星,真来了!
- TensorFlow的新生!
- 计算机硬件实验代码转换,计算机硬件实验指导书(17页)-原创力文档
- 星外php使用教程_星外PHP5.2.17自动配置一键安装包 防phpdos v1.4
- Matlab第二章选择题填空题,matlab及其在大学物理中的应用第二章习题答案.doc