ubuntu 15.10下cmake 的安装

因为原先ubuntu自带的cmake有点旧,就想着安装个最新的,可是直接安装卡在了某一步上,后面有说明。现将正确的安装方法列出来。
1.卸载原有的版本
sudo apt-get autoremove cmake
2. 下载最新的cmake :https://cmake.org/download/
3. 解压:tar -xzvf cmake.tgz
 进入解压的文件; cd cmake
                                依次执行 ./bootstrap  (这一步我之前出错过,不知道为什么,我卸载掉旧的就好了。)
make
make install(需在root下进行)
后来看到了: http://www.cnblogs.com/skyofbitbit/p/3699968.html 提到:
如果还没有安装CMake,源码树中提供了一个 bootstrap 脚本:
./bootstrap
make
make install 
(注:make install 一步是可选的,CMake 可以在编译目录下运行。)
一个已经安装了的CMake也可以用于编译新版本的CMake:
cmake .
make
make install
(注:make install 一步是可选的,CMake 可以在编译目录下运行。)

附:
转:CMake安装和使用
 
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。
CMake 可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。
“CMake”这个名字是“cross platform make”的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。
 
下载:
      在安装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.mzph.cn/news/259029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

codeigniter钩子的使用

CodeIgniter 的钩子功能,使得我们可以在不修改系统核心文件的基础上,来改变或增加系统的核心运行功能。可是钩子究竟该怎么用呢?虽然不是很难,不过很多刚用ci的朋友可能还是不明白怎么用。 通过本文的简单实例,大家一下…

wxWidgets之wxGrid控件

1. 介绍wxGrid控件时wxWidgets界面库中内置的网格控件。通经常使用来显示表格数据。该控件拥有强大的功能。开发人员可依据自己的需求对其进行定制。 2. 经常使用API 构造函数:wxGrid ()wxGrid (wxWindow *parent, wxWindowID id, const wxPoint &poswxDef…

powerdesigner画关系图_想画好手绘,这些图你一定要画一下!

画好手绘除了对透视要深入了解掌握以及线条运用把握之外,还有很重要的就是要对空间物体的关系、比例、光影关系都要理解透彻。大体快可分割成多个x小体块。其实当年学习的绘画基础也是画好手绘的基础,画手绘依然需要去理解整体画面的空间黑白灰、物体穿插…

C#,pdf文件转换成图片文件。

本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件。 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0。 工程中添加COM引用:Adobe Acrobat 9.0 Type Library(必须装了Adobe …

Android进程间通信

一.Linux系统进程间通信有哪些方式? 1.socket; 2.name pipe命名管道; 3.message queue消息队列; 4.singal信号量; 5.share memory共享内存; 二.Java系统的通信方式是什么? 1.socket; 2.name pip…

最新的一些开源face alignment及评价

dlib :https://github.com/davisking/dlib/tree/v18.18 评价:速度快,可商用,有些时候不太准确 2. CLM-framework: https://github.com/TadasBaltrusaitis/CLM-framework 评价:很准确,不可商用 3. Face Detection…

1048 石子归并

1048 石子归并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量和w[i]w[i1]。问安排怎样的合并顺序&#xf…

internetreadfile读取数据长度为0_【完结】TensorFlow2.0 快速上手手册

大家好,这是专栏《TensorFlow2.0》的第五篇文章,我们对专栏《TensorFlow2.0》进行一个总结。我们知道全新的TensorFlow2.0 Alpha已经于2019年3月被发布,新版本对TensorFLow的使用方式进行了重大改进,为了满足各位AI人对TensorFlow…

Facial Landmark Detection(人脸特征点检测)

原文地址:http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375 作为计算机视觉研究员,我们很早就开始研究人脸。人脸分析领域最广为人知的就是人脸识别(face recognition).但是为了识别一幅图像中的人脸&…

cpu卡操作协议iso14443协议

http://baike.baidu.com/link?url3mef2ZMRoNuBrVLA2HpEh8xrBtzACdIi5nIDUsMyVkA8OulIXGWgswvFcTiBfh_B转载于:https://www.cnblogs.com/shuenjian901/p/3496331.html

Python 字符串的内置函数

方法描述string.capitalize()把字符串的第一个字符大写string.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串string.count(str, beg0, endlen(string))返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str …

Java中的Error和Exceptiond的异同点

Error和Exception的异同点: (1)Error类和Exception类都继承超类Java.lang.Throwable (2)Error:一般指与虚拟机相关的问题,如系统崩溃,内存溢出等。对于这类错误,仅靠程序…

python算法题_python基本算法题(一)

1、3位水仙花数计算 "3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。 例如: ABC是一个“3位水仙花数”,则:A的3次方+B的3次方+C的3次方 ABC。 使用Python,输出所有的3…

虚拟机环境下安装ESX不能安装虚拟系统解决方案

在虚拟机环境(ESX、workstation等)下安装ESX或workstation等虚拟机,在虚拟机上再安装操作系统,会提示“虚拟系统不能启动,直到你配置了外部虚拟机(vmware esx in a virtual machine requires the outer vir…

superviseddescent (SDM C++11实现)环境配置

今天试着用了一下SDM的C11实现,本来以为挺简单的,可是配置环境还是花了一些时间。为了给自己留下一些记忆,特把配置过程记录下来。 这个实现是C11的版本,是一个通用版本,里面包含了很多的功能,比如函数的最…

1008: University

台州ACM:1008: University Description 在大学里,非常多单词都是一词多义。偶尔在文章里还要用引申义。这困扰Redraiment非常长的时间。 他開始搜集那些单词的全部意义。他发现了一些规律,比如 “a”能用“e”来取代, “c”能用“f”来取代……

Android 5.1 API 22 所有sdk文件下载地址

开源中国的 IT 公司开源软件整理计划介绍 https://dl-ssl.google.com/android/repository/docs-22_r01.ziphttp://dl.google.com/android/repository/android-22_r01.ziphttps://dl-ssl.google.com/android/repository/samples-22_r05.ziphttps://dl-ssl.google.com/android/re…

python图形小游戏代码_手把手制作Python小游戏:俄罗斯方块(一)

手把手制作Python小游戏:俄罗斯方块1大家好,新手第一次写文章,请多多指教 A.准备工作: 这里我们运用的是Pygame库,因为Python没有内置,所以需要下载 如果没有pygame,可以到官网下载 pygame官网&…

关于Git使用的一些心得

2019独角兽企业重金招聘Python工程师标准>>> 本篇稍微记录下Git使用的一些心得。 对Git的使用,应该是从搭建自己的博客开始的。当时看到开源中国推荐的一篇基于码云hexo搭建自己博客的文章。所以就花了一天时间鼓捣了下博客。 顺带整理下目前能看到我写的…

Dlib机器学习库安装

昨天使用了一下dlib的人脸检测功能,效果出奇的好。下面给出dlib整个的安装过程和使用指导。 下载安装 我们可以从dlib的官网下载最新的版本,我的是dlib18.18.然后我们需要使用cmake编译dlib库和examples示例。 当然前提是你要按照好cmake和opencv。 …