在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → CMake 完整入门教程

CMake 完整入门教程

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:0.57M
  • 下载次数:24
  • 浏览次数:274
  • 发布时间:2020-09-15
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.zip
  • 所需积分:2
 

实例介绍

【实例简介】
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。网络上cmake的教程很多,但是我发现我很难找到一个完整、详细的中文版教程。因此我将收集自网络的信息汇总,整理出了这样一个文档。希望能够对大家有帮助。
从命令行生成工程 对于一个已经配置好了 CMakelists txt的项目来说,从命令行生成工程文件是很简单的 件事情。 下面是从命令行生成一个项目的工程文件的例子语句: Scmake\Source-G"Visual Studio 10 这条语句将在当前目录下,生成针对\ Source目录的 Visual studio2010工程。 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 Code -Min GW Makefiles Generates Code Blocks project files Code- NMake Makefiles generates code blocks project files Codeblocks -Unix makefiles Generates Code blocks 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 生成位和位工程 对于 Windows msvc,我们可以设定 CMake generator来确定生成Win32还是Wn64工程 文件,例如: #用丁生成 Visual studio10Win64工程文件 s cmake-G Visual Studio 10 Win64" #用于生成 sual studio10Win32工程文件 s cmake-G"Visual Studio 10 我们可以通过 CMake-hep来查看当前平台可用的 Generator 对于UN和类UNⅨX平台,我们可以通过编译器标志(选项)来控制进行32位还是64位 构建。 从命令行定义全局变量 在执行 cmake指令的时候,可以定义任意多个全局变量。这些全局变量可以直接在 CMakelists,txt屮被使用。这是一项很方便的功能。例如,如果你希望利用 cmake生成多 种配置的工程,你可以将工程配置作为一个全局变量,在命令行指定 在命令行定义全局变量的语法为 Scmake.\Source-G Visual Studio 10"-DCONFIG=Debug -DSSE=True 这条指令定义了两个全局变量: CONFIG和SSE,其值分別是" Debug"和"True"。 不要被这两个变量前面的-D所迷惑。那只是用来告诉 cmake,要定义变量了。除此以外没 有任何意义。 构建类型 CMake为我们提供了四种构建类型 Debug Release Min SizeRel RelwithDebInfo 如果使用 CMake为 Windows msvc生成 projects/ workspaces那么我们将得到上述的4种解 决方案配置。 如果使用 CMake生成 Makefile时,我们需要做一些不同的工作。 CMake中存在一个变 量 CMAKE BUILD TYPE用于指定构建类型,此变量只用于基于make的生成器。我们可以 这样指定构建类型: S cmake-DCMAKE BUILD TYPE=Debug 这里的 CMAKE BUILD TYPE的值为上述的4种构建类型中的一种。 直译模式 CMake提供了直译模式,可以执行指定的 script而不以生成 makefile为目的,后面介绍的 语法特色都可以在直译模式下练习。 S cmake-p <script-file> 虽然这意味着我们可以将 CMake拿来当作一般的 scripting language使用,但 CMake先天 上就不是为了通用编程语言而设计,所以使用起来未必方便,特别是数学计算方面 CMake脚本基本语法 语法简介 CMake的语法非常单纯,由指令 command)和注解所组成,所有的空白、换行、tab都没 有特殊作用,仅为语汇元素的区隔 注释 凡是由#字符廾头一直到换行字符间的内容皆会被视为注解,不会有任何作用。 #这是注释 指令 基本语法 CMake script由一连串的指令 command)组成,每个指令可有零至多个参数。使用指令的 法为指令名称加上小括号,括号内可以有零或若干个参数,指令则依照出现在 CMakelists当中的顺序执行。 指令是不分大小写的! 在 cmake中,所有指令名称大小写都一视同仁,例如 Command、 COMMAND皆视为同 个指令。 例如 message指令常用来输出讯息: message( hello) 会输出: hello 参数的格式 指令的参数通常使用空格、tab或者换行来分隔,如: command(argl arg2 arg3 .argn command arg arg2 arg3 argn) 然而,值得注意的是, CMake也支持用分号;来分隔参数。不过我强烈不建议使用分号来 分隔参数。 在命令行查阅指令说明 输入: cmake --help- command-list 可以查看到所有的指令列表。要想查阅某个指令的详细使用说明,例如 MESSAGE指令 可以在命令行输入: cmake --help-command message 在 网站上查阅指令说明 cmake2812的指令说明可以在这个地址查阅到: http://www.cmake.org/cmake/help/v2.8.12/cmake.html 变量 在撰写 CMakelists时可以使用变量储存资料以及作为指令的参数。 变量的特征 CMake中的变量具有以下特征: 变量严格区分大小写! CMake中的变量只有两种类型:字符串,和字符串数组 ·变量无需声明即可赋值或者使用。未赋值的变量默认为一个空字符串。 ·与其他语言编程语言不同的是, CMake脚本的语法中没有赋值操作。无论是赋 值,还是比较、判断操作,都是通过内置指令来完成的。 ·变量可以认为都是全局的,哪怕在一个宏中定义的变量,也可以在宏的外面被访问 定义变量 宇串和字串数组是 CMake当中的唯一的两种变量类型。在 CMake当中我们可以用set(指 令来设定一个变量的值,变量会在第一次使用的时候自动初始化,无须宣告。提取变量值 时通常必须在外面加上S{符号,不过也有少数场合例外 set(var hello message (Sarl) 会输出 hello 将字串用空白或分号分隔则表示字串数组 set(foo this is a list set(foo this; is; a; list) 上面这两个指令作用完仝相同,都是将变量foo值指定为个字串数组,内含this、is、 a、list四个字串。 如果在命令中,使用包含了字符串数组的变量作为参数会是怎样的情况呢?例如,下面的 变量 set(foo a b c) 将其作为参数传入一个指令 command(s(fool) 这等同丁: command(a b c) 将这个道理应用到其他地方。例如,要想在foo数组里面增加一个字符串怎么办呢?只要 把foo变量作为一个参数传递进去就可以了: set(foo sifoo] d) 执行了该指令后,变量foo中则包含了四个字串:a、b、c、d 变量的递归代换 我们知道,要使用一个变量,语法 Variable}可以提取岀变量所冇储的值。变量值的代换 甚至可以递归进行,在撰写复杂的功能时可能很有用。例如: set(var hello) set(foo var) message(sffoo) message(ssffool1) 会输出 var hello 系统内建全局变量 CMake预定义了一系列內建变量。请注意,所有的内建变量都是以大写来定义的。 例如: CMAKE CURRENT SOURCE_DR,指的是当前处理的 CMakeLists txt所在的路径 详细列表见后续章节。 调用环境变量的方式 使用 SENVINAME}指令就可以调用系统的环境变量了。 比如 MESSAGE(STATUS"HOME dir: SENVHOMEN') 设置环境变量的方式是: SET(ENV变量名}值 字符串操作 不加引号直接使用字符串 在 CMake中,指令的参数只有两种可能: 变量 字符串 如果字符串中不包含空格,那么可以不加引号,直接使用。例如: set(var hello) message(Sfvar] world) set指令中使用了两个参数:第一个参数是字符串"var",作为变量的名字;第二个参数是 字符串"heo",作为变量的值。 message指令屮使用了两个参数:变量var,和字符串" world" 在字符串中展开变量 在字符串中如果用$旮将一个变量名包了起来,那么该变量也会被代换。 例如,如果我们执行下面的指令 set(foo a b c d command("s fool 则相当于我们执行了 command("abcd") 使用特殊字符 在字串当中乜可以插入空白、换行、分号等字符。例如: set(a alpha beta gamma) set(b"alpha beta gamma") set(c"alpha beta gamma message("a=Sfa]") message("b=Sb ") message("c=Sc]") 共输出为: a= alpha; beta gamma b= alpha beta gamma alpha gamma 注意 ·a等于一个字串数组,内容为apha、beta、 gamma三个字串 ·b等于一个字串,内容为 alpha beta gamma ·c等于一个字串,内容为以换行为分隔的 alpha beta gamma 转义字符串 CMake大致上相容C语言当中的 Escape sequence,如thn等等。如欲表示 CMake当中的 特殊字符时也可用\标记。 set(bar alpha beta gamma") message("\s(bar): S(bar]") 上面的程式码输出 S(bar]: alpha beta gamma 字符串连接 我们也可以利用set作字串串接 set(a alpha beta gamma") set(b"sa)delta") set(c sa"delta") b等于一个字串,内容为" alpha beta gamma dalta" 【实例截图】
【核心代码】

标签:

实例下载地址

CMake 完整入门教程

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警