cmake的版本的更新以及和sudo cmake的區別

cmake的版本的更新以及和sudo cmake的區別

之前裝Open3D,在使用cmake指令編譯時報錯,看了一下它的CMakeLists文件發現要求的cmake的最低版本爲3.80,而我現在使用的Ubuntu16.04默認的cmake版本爲3.5,所以導致了編譯失敗。雖然之後心懷僥倖地把cmake_minimum_required(VERSION 3.8.0)改爲了cmake_minimum_required(VERSION 3.5.0),編譯了也沒報錯,但是還是不敢瞎搞,所以去下了一個最新版的cmake。然後就開始了我辛酸的踩坑之路。

這裏先提前說一下,cmake和sudo cmake是有區別的,在你更新完cmake版本之後,如果操作不當,很有可能導致它們的版本不同!我在網上搜了很長時間,發現基本上沒有人沒有人正面回答cmake和sudo cmake版本不同如何解決的問題。因此記錄一下這個知識點,也不枉我浪費了這麼多時間。

廢話有點多哈,下面直接進入正題。可能會寫的有些冗雜,但是博主還是希望儘可能解釋清楚,能夠知其然知其所以然。

首先是查看你當前的cmake版本。在終端分別輸入

cmake --version
sudo cmake --version

正常情況下兩者對應的版本應該是一致的,Ubuntu16.04對應的是cmake3.5版本。

之後如果你參考部分別的博文,它們下一步應該就是卸載原來的cmake(千萬不要做)

sudo apt-get autoremove cmake

這一步會把你原來跟cmake編譯好的包全給卸掉,我傻傻地跟着做完之後發現ROS不能用了,無奈又重裝了一遍。

正確做法是下載一個新的安裝包,然後用新版本覆蓋掉。
可以考慮去官網下最新版本,選擇Linux x86_64的。
在這裏插入圖片描述
或者在https://cmake.org/files/中選擇過去的對應版本。
也可以執行下述語句

#這裏選擇我自己安裝的cmake版本作爲示例
wget http://www.cmake.org/files/v3.13/cmake-3.13.4.tar.gz

如果是在默認打開的終端上執行且沒有指定目標下載路徑的話,都會在home下面的用戶文件夾下的得到*.tar.gz文件,執行下述命令得到解壓縮文件

tar -xzvf cmake-3.13.4-Linux-x86_64.tar.gz

cd到cmake-3.13.4-Linux-x86_64文件夾下,發現有4個子文件夾
在這裏插入圖片描述
那麼問題來了,明明很多其他博文裏面寫着執行 ./configure 命令或者 ./bootstrap 命令,這裏怎麼沒有?因爲騷年你下載的是免安裝的,解壓完成就可以用了。但是現在還不行,如果你此時使用cmake,你打開~/.bashrc文件會發現裏面多了一句導入你當前cmake環境變量的語句,但是對應的路徑是你解壓包所在的位置。然後此時你再查看cmake和sudo cmake的版本,會發現兩者是有區別的。

因爲部分下載的包編譯時一般都會要求權限,所以還是儘可能把cmake和sudo cmake的版本統一較好。

我們把解壓後的cmake包放到/opt目錄下面(/opt裏的文件則是安裝系統後用戶自己安裝的其他應用軟件,一般是源碼包的軟件)。在當前目錄下執行

sudo mv cmake-3.13.4-Linux-x86_64 /opt/

如果在此之前已經使用過新下載的cmake編譯的,記得查看一下.bashrc文件裏面的環境變量

sudo gedit ~/.bashrc

確認cmake的環境變量爲,如果不是請修改或者添加

export PATH=/opt/cmake-3.13.4-Linux-x86_64/bin:$PATH

然後建立軟連接

sudo ln -sf /opt/cmake-3.13.4-Linux-x86_64/bin/*  /usr/bin/

因爲我們在使用cmake時實際上就是調用了cmake-3.13.4-Linux-x86_64/bin/路徑下的cmake來執行的,因此我們將這個bin下的所有文件全部軟連接到/usr/bin/下面,這樣就完成了sudo cmake的升級。在命令行下輸入

cmake --version
sudo cmake --version

在這裏插入圖片描述
這樣就同時完成了cmake和sudo cmake的升級。

以上便是全部內容,如有錯誤請及時提出~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章