没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
CMake 完整入门教程
任麒麟自网络资源收集整理
1 前言
每一次学习新东西都是很有乐趣的,虽然刚开始会花费时间用来学习,但是实践证明,因
为它们不同于老事物的优点,最后能为我省下的时间会更多。
网络上 cmake 的教程很多,但是我发现我很难找到一个完整、详细的中文版教程。本文档
中的内容全部收集自网络。详细情况请见附录。
2 CMake 简介
CMake 是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过
程)。他能够输出各种各样的 makefile 或者 project 文件,能测试编译器所支持的 C++特
性,类似 UNIX 下的 automake。
由于 CMake 易于使用,以及在跨多平台的支持上做得更好,CMake 得到了越来越多的人
的使用。下面的是来自 Google 的趋势图,可以看出 CMake 的应用情况。
2.1 CMakeLists.txt
CMake 靠的是 CMakeLists.txt 文件来生成工程的,事实上,CMakeList.txt 的编写就如使用
make 时编写 Makefile,只不过,相对来说 CMake 站的高度更高一些,所以虽然还是要编
写一个配置文件,但是 CMakefile 的编写比 makefile 轻松简单很多,而 CMake 最后其实还
是通过生成 makefile 的方式来管理工程的(事实上,CMake 可以生成多种工程文件,甚至
支持 eclipse 和 VC)。
CMakeLists.txt 里面则是具体的指令,用来告诉 CMake 如何生成工程。
2.2 编译和源代码分离
CMake 背后的逻辑思想是编译和源代码分离的原则。
通常 CMakeLists.txt 是和源代码放在一起的。一般每个子目录下都有一个 CMakeLists.txt 用
于组织该目录下的文件。
而针对具体的平台和配置,我们可以单独创建一个目录,然后在该目录下生成特定平台和
配置的工程文件。这样能够做到具体的工程文件不会和源代码文件混搭在一起。
2.3 CMakeLists.txt 自动继承父目录
子目录的 CMakeLists.txt 自动继承了父目录里的 CMakeLists.txt 所定义的一切宏、变量。这
极大地减少了重复的代码。
3 CMake 安装
要想使用 cmake,先要安装它。去 www.cmake.org 下载一个最新的 cmake 版本。然后根据
安装说明安装即可。
安装完毕后,打开系统命令行,输入:
cmake --version
如果你看到类似如下的字符串,说明你安装成功了。
cmake version 2.8.12.1
4 CMake 命令行指令
4.1 从命令行生成工程
对于一个已经配置好了 CMakeLists.txt 的项目来说,从命令行生成工程文件是很简单的一
件事情。
下面是从命令行生成一个项目的工程文件的例子语句:
$cmake ..\Source -G "Visual Studio 10"
这条语句将在当前目录下,生成针对..\Source 目录的 Visual studio 2010 工程。 ..\Source 下
必须已经定义了 CMakeLists.txt。
常用的 cmake 可以支持的工程类型为:
Visual Studio 10 = Generates Visual Studio 10 (2010) project files.
Visual Studio 11 = Generates Visual Studio 11 (2012) project.
Visual Studio 12 = Generates Visual Studio 12 (2013) project files.
MinGW Makefiles = Generates a make file for use with mingw32-make.
Unix Makefiles = Generates standard UNIX makefiles.
CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files.
CodeBlocks - NMake Makefiles = Generates CodeBlocks project files.
CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
Eclipse CDT4 - MinGW Makefiles = Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - NMake Makefiles = Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - Unix Makefiles = Generates Eclipse CDT 4.0 project files.
4.2 生成 32 位和 64 位工程
对于 Windows MSVC,我们可以设定 CMake Generator 来确定生成 Win32 还是 Win64 工程
文件,例如:
# 用于生成 Visual Studio 10 Win64 工程文件
$ cmake -G "Visual Studio 10 Win64"
# 用于生成 Visual Studio 10 Win32 工程文件
$ cmake -G "Visual Studio 10"
我们可以通过 CMake –help 来查看当前平台可用的 Generator
对于 UNIX 和类 UNIX 平台,我们可以通过编译器标志(选项)来控制进行 32 位还是 64 位
构建。
4.3 从命令行定义全局变量
在执行 cmake 指令的时候,可以定义任意多个全局变量。这些全局变量可以直接在
CMakeLists.txt 中被使用。这是一项很方便的功能。例如,如果你希望利用 cmake 生成多
种配置的工程,你可以将工程配置作为一个全局变量,在命令行指定。
在命令行定义全局变量的语法为:
$cmake ..\Source -G "Visual Studio 10" -DCONFIG=Debug -DSSE=True
这条指令定义了两个全局变量:CONFIG 和 SSE,其值分别是"Debug"和"True"。
不要被这两个变量前面的-D 所迷惑。那只是用来告诉 cmake,要定义变量了。除此以外没
有任何意义。
4.4 构建类型
CMake 为我们提供了四种构建类型:
Debug
Release
MinSizeRel
RelWithDebInfo
如果使用 CMake 为 Windows MSVC 生成 projects/workspaces 那么我们将得到上述的 4 种解
决方案配置。
如果使用 CMake 生成 Makefile 时,我们需要做一些不同的工作。CMake 中存在一个变
量 CMAKE_BUILD_TYPE 用于指定构建类型,此变量只用于基于 make 的生成器。我们可以
这样指定构建类型:
$ cmake -DCMAKE_BUILD_TYPE=Debug
这里的 CMAKE_BUILD_TYPE 的值为上述的 4 种构建类型中的一种。
4.5 直译模式
CMake 提供了直译模式,可以执行指定的 script 而不以生成 makefile 为目的 ,后面介绍的
语法特色都可以在直译模式下练习。
$ cmake -P <script-file>
虽然这意味着我们可以将 CMake 拿来当作一般的 scripting language 使用,但 CMake 先天
上就不是为了通用编程语言而设计,所以使用起来未必方便,特别是数学计算方面。
5 CMake 脚本基本语法
5.1 语法简介
CMake 的语法非常单纯,由指令 (command) 和注解所组成,所有的空白、换行、tab 都没
有特殊作用,仅为语汇元素的区隔。
5.2 注释
凡是由 # 字符开头一直到换行字符间的内容皆会被视为注解,不会有任何作用。
# 这是注释
5.3 指令
5.3.1 基本语法
CMake script 由一连串的指令 (command) 组成,每个指令可有零至多个参数。使用指令的
语法为指令名称加上小括号,括号内可以有零或若干个参数,指令则依照出现在
CMakeLists 当中的顺序执行。
指令是不分大小写的!
在 cmake 中,所有指令名称大小写都一视同仁,例如 Command、COMMAND 皆视为同一
个指令。
例如 message 指令常用来输出讯息:
剩余44页未读,继续阅读
资源评论
- maple_jy2015-10-26要的分太多了,不过资源还可以
- 情癫的搁浅2018-07-12不错的文档,入门有用
- hawfinch_sg2018-08-01very good!
- David_Henry2014-07-16还可以,不过要分太多~~~
- 笨小孩19952018-07-25文档不错,适合入门
renqilin
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功