转:CMake安装和使用
在安装metis-5.0时,安装说明中要求必须安装CMake2.8版本,下面是CMake的安装和使用方法,记录下来以便以后学习。
在网址 http://www.cmake.org/ 下载你所需要的CMake源码包cmake-2.8.8.tar..gz(版本不同,压缩包后缀不同),分为Unix/linux版本 和 windows版本 。
1、安装
有好几种安装CMake 的方法,因你所用的平台而异。
(1)从源码安装
Windows
在CMake 下载页面 上有已编译好的二进制包。它提供的是一个可执行的安装程序。你还可以下载源码包并从源码包编译CMake。CMake下载页面还提供了已释出的源码和访问CVS的指令。
为了从源码树编译CMake,你必须先要安装最新的CMake二进制版本,因为要用它来编译源码树。一旦装好了二进制版本的CMake,你就可以像编译其他项目一样使用CMake编译CMake了。一般来说,这意思是你要选择CMake源码目录作为源目录,然后再指定编译出来的可执行程序结果的位置。
Linux, Mac OSX, UNIX & Cygwin
在CMake 下载页面 上有许多UNIX平台上已经编译好的二进制包。
下面有几种从源码树编译CMake的方法:
解压:tar xvf cmake-2.8.8.tar.gz
进入解压目录:cd cmake-2.8.8
进行如下操作:(选择适合自己的操作步骤)
如果还没有安装CMake,源码树中提供了一个 bootstrap 脚本:
./bootstrap
make
make install
(注:make install 一步是可选的,CMake 可以在编译目录下运行。)
一个已经安装了的CMake也可以用于编译新版本的CMake:
cmake .
make
make install
(注:make install 一步是可选的,CMake 可以在编译目录下运行。)
在UNIX上,如果你不是使用的GNU C++编译器,你要告诉bootstrap 脚本你想用哪个编译器。这可以在运行configure命令前通过设置CC和CXX环境变量完成。例如,在一个带有7.3X编译器的SGI平台上,你可以像下面这样编译CMake:
(setenv CXX CC; setenv CC cc; ./bootstrap)
make
make install
要查看bootstrap脚本的详细参数,请执行 ./bootstrap –help
(2)从二进制安装
sudo apt-get install cmake
2、cmake 运行
(1)运行cmake with GUI
如果系统中有curses库的话,cmake将生成一个可执行文件ccmake,它是一个基于文本程序的终端,有点类似windows GUI。
在源码目录中运行ccmake .,生成的二进制文件存放在源码目录下
当然也可以在其他目录下运行ccmake,只是要指定你想编译的源码的路径
ccmake的使用
当我们在源码目录下运行ccmake . 时,终端将显示如下:
当我们键入c时,ccmake将编译
当我们键入方向键时,可以选择cache entry
当我们键入enter时,可以编辑cache entry
当我们键入g时,将生成Makefile,然后退出
当我们键入h时,将弹出帮助文档
当我们键入q时,将退出ccmake
当我们键入t时,可以打开或关闭advanced cache entry
(2)运行cmake from the command line
如果源码没有太多的选项(在CMakeCache.txt文件中),可以只用cmake .来产生Makefile。
如果源码选项太多,比如VTK,可以把参数-i传递给cmake,如:cmake -i .,
cmake将让你为每一个cache file文件中的选项指定一个值,也能让你增加新的选项到文件CMakeCache.txt中,或者使用ccmake,或者使用CMakeSetup。
当然,也可以传递设置选项的参数给cmake,如:
cmake -DVARIABLE:TYPE=VALUE .
3、 CMake cache
cmake第一次运行的时候,它将产生一个文件叫CMakeCache.txt,该文件可以被看作一个配置文件,它里面的内容就像传递给configure命令的参数集,CMake GUI可以帮你很容易修改它,当然也可以直接对该文件做修改;如果你的CMakeLists.txt文件做过较大幅度的修改,你需要从cache中删除相关的选项,如果你还没有手动编辑过cache文件,在你重新运行cmake之前需删除它。
4、 Cmake语法
(1)基本概念
cmake使用Cmake dfjs;dfasfLists.txt文件,该文件用include或者add_subdirectory命令来增加额外的输入文件。
注释行以#开头到该行结尾
命令是由命令名,加括号,括号中的参数用空白隔开,它可以是内建的命令如add_library,或者用户定义的宏或函数
所有的空格,包含空白符,空行,tabs,当然除了用来隔开参数的空白,都被忽略
(2)变量
。字符串
一个字符串是用双引号括起来的,也可以被分隔在多行,如:
set(MY_STRING “this is a string with a
newline in
it”)
在一个字符串中也可以用变量,如:
set(VAR “
hello
world
”)
当执行message(“/${VAR}=${VAR}”)后,将打印:
${VAR}=
hello
world
也可以message(“/n/thello world”)后,将打印:
hello world
。字符串列表
cmake基本的数据类型为字符串,也可以支持字符串列表,如:
set(VAR a;b;c)或set(VAR a b c)将把VAR设置为字符串列表
要使用VAR,可以用${VAR},如:
command(${VAR}),它相当于command(a b c)
如果想把一个字符串列表作为单个参数传递给命令,可以用双引号,如:
command(“${VAR}”),相当于command(“a b c”)
(3)流程控制
。判断
if(var)
some_command(...)
endif(var)
当var的值不为empty,0,N,NO,OFF,FALSE,NOTFOUND
-NOTFOUND,some_command(...)将被执行
。循环
set(VAR a b c)
foreach(f ${VAR})
message(${f})
endforeach(f)
用变量f依次代替a,b,c执行message()
。宏和函数定义
定义一个宏hello
macro(hello MESSAGE)
message(${MESSAGE})
endmacro(hello)
调用宏hello
hello(“hello world”)
定义一个函数hello
function(hello MESSAGE)
message(${MESSAGE})
endfunction(hello)
(4)正则表达式
很多CMake命令如if,会使用正则表达式作为参数,下面是正则表达式会用到的特殊字符:
^:匹配一行或一个字符串的开头
$:匹配一行或一个字符串的结尾
.:匹配单个字符
[]:匹配方括号中任意字符或字符串
[^]:匹配不是方括号中的字符或字符串
[-]:匹配在dash任意一边的字符
*:匹配0或多个先前的字符序列
+:匹配1或多个先前的字符序列
?:匹配0或1个先前的字符序列
():保存一个匹配的表达式,以便以后使用
参考:http://www.cmake.org/cmake/help/documentation.html
转:CMake安装和使用的更多相关文章
- cmake安装MySQL
发现一个网址整理的挺好,请各位参考: http://www.chenyudong.com/archives/building-mysql-5-6-from-source.html#i 也可以参考我的另 ...
- cmake 安装 mysql
因为高版本mysql都用cmake安装,另外安装cluster版的mysql也必须通过cmake安装,所以学习cmake安装mysql很有必要. 今天我因为打算搭配一个mysql集群所以,在虚拟机上安 ...
- CMake安装grpc生成gRPCTargets.cmake文件
以下是安装语句: cd grpc_folder git submodule update --init cmake .. make -j 4 sudo make install 然而编写依赖gRPC的 ...
- cmake安装配置及入门指南
前言 今天,从github下载代码学习,让我用cmake编译,纳尼?make我知道,cmake是啥鬼?天啊,无知很可怕!赶紧mark一波,虽然很耽误学习进度,但感觉还是要get一波! 一.安装准备 感 ...
- OpenCV+Qt+CMake安装+十种踩坑
平台:win10 x64+opencv-3.4.1 + qt-x86-5.9.0 + cmake3.13.4 x64 OpenCV+Qt+CMake安装,及目前安装完后打包:mingw32-make时 ...
- mac10.12.6系统使用cmake安装opencv3.3.0+opencv_contrib-3.3.0
brew与cmake brew安装 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/ins ...
- opencv移植(一)cmake安装
原文:https://blog.csdn.net/Guet_Kite/article/details/78667175?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接 ...
- CMake安装或CMake Error at CMakeLists
CMake安装或CMake Error at CMakeLists 发生情景: 使用cmake命令安装软件时,报如下错误: CMake Error at CMakeLists.txt:4 (CMAKE ...
- linux cmake安装方法
linux cmake安装方法 OpenCV 2.2以后的版本需要使用Cmake生成makefile文件,因此需要先安装cmake:还有其它一些软件都需要先安装cmake 1.在linux环境下打开网 ...
- CMake安装(linux)
环境:CentOS6.5 1.下载网址: http://www.cmake.org/download/ (选择linux版本,编译安装) 2.安装 # tar zxvf cmake-.tar.gz # ...
随机推荐
- python笔记32-ddt框架优化(生成html报告注释内容传变量)
前言 至于什么是ddt这个可以参考我之前写的博客内容,使用ddt框架的时候,有个问题困扰我很久了,一直没得到解决(也有很大小伙伴问过我,没解决抱歉了!) 这个问题就是:如何使用ddt框架时,生成的ht ...
- RobotFramework自动化2-自定义关键字
前言 有时候一个页面上有多个对象需要操作,如果一个个去定位的话,比较繁琐,这时候就可以定位一组对象.Selenium2library提供了Get Webelements 关键字,用于定位一组元素 以百 ...
- java利用poi包 为excel生成超链接
转载自:http://www.blogjava.net/leekiang/archive/2008/10/21/235794.html 1,一个需求, 要求报表生成的Excel表格支持超链接.例如 ...
- Flask 学习(四)静态文件
Flask 学习(四)静态文件 动态 web 应用也需要静态文件,一般是 CSS 和 JavaScript 文件.理想情况下你的服务器已经配置好提供静态文件的服务. 在开发过程中, Flask 也能做 ...
- 在Java Web程序中使用Hibernate
在Java Web程序中使用Hibernate与普通Java程序一样.本文中将使用Servlet和JSP结合Hibernate实现数据库表的增删改查操作. Web程序中,hibernate.cfg.x ...
- Informatica 常用组件Source Qualifier之七 使用排序端口
使用已排序端口时,PowerCenter 将添加端口至默认查询中的 ORDER BY 子句.PowerCenter Server 将添加配置的端口号,从源限定符转换的顶部开始.在映射中包括以下任何转换 ...
- 如何处理wordpress首页不显示指定分类文章
如何实现wordpress首页不显示指定分类文章,要实现这一步,首先必须找到需要屏蔽的该目录的id,那么如何查看wordpress的分类id呢?有两种方法: 通过wordpress后台查看分类的ID ...
- Length of Last Word leetocde java
题目: Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return t ...
- Interpreter Expression 解释器模式 MD
解释器模式 简介 Interpreter模式也叫解释器模式,是行为模式之一,它是一种特殊的设计模式,它建立一个解释器,对于特定的计算机程序设计语言,用来解释预先定义的文法. 应用环境: 如果一种特定类 ...
- ASP.NET 仿腾讯微博提示“还能输入*个字符”的实现
textbox如果设置TextMode="MultiLine"则 它的MaxLength设置的值就无效:为了能达到像腾讯微薄.新浪微薄那样的提示的效果(腾讯和新浪微薄文本框用到的应 ...