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.pswp.cn/news/259029.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259029.shtml
英文地址,請注明出處:http://en.pswp.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。 …