CMake安裝#
首先需要確認(rèn)是否安裝好g++,gcc (安裝方法 sudo apt-get install gcc,sudo apt-get install g++)
下載新版本:
下載:在cmake網(wǎng)站下載安裝包: https://cmake.org/download/
下載
wget https://[cmake](https://so.csdn.net/so/search?q=cmake&spm=1001.2101.3001.7020).org/files/v3.11/cmake-3.10.0.tar.gz
3、解壓:tar -zxv -f cmake-3.10.0.tar.gz
4膘掰、進(jìn)入解壓后的文件:cd cmake-3.10.0
5塞帐、開始安裝
sudo ./bootstrap
sudo make
sudo make install
6.卸載
sudo make uninstall
Makefile文件使用#
什么是makefile蟋定?或許很多Winodws的程序員都不知道這個(gè)東西奕谭,因?yàn)槟切¦indows的IDE都為你做了這個(gè)工作,但我覺得要作一個(gè)好的和professional的程序員,makefile還是要懂僵井。這就好像現(xiàn)在有這么多的HTML的編輯器,但如果你想成為一個(gè)專業(yè)人士驳棱,你還是要了解HTML的標(biāo)識(shí)的含義批什。特別在Unix下的軟件編譯,你就不能不自己寫makefile了社搅,會(huì)不會(huì)寫makefile驻债,從一個(gè)側(cè)面說(shuō)明了一個(gè)人是否具備完成大型工程的能力。因?yàn)樾卧幔琺akefile關(guān)系到了整個(gè)工程的編譯規(guī)則合呐。
簡(jiǎn)單說(shuō)makefile文件的執(zhí)行可以在當(dāng)前文件夾下 make
##
?make是什么?
make是一個(gè)命令工具笙以,是一個(gè)解釋makefile中指令的命令工具淌实。它可以簡(jiǎn)化編譯過(guò)程里面所下達(dá)的指令,當(dāng)執(zhí)行 make 時(shí)猖腕,make 會(huì)在當(dāng)前的目錄下搜尋 Makefile (or makefile) 這個(gè)文本文件拆祈,執(zhí)行對(duì)應(yīng)的操作。make 會(huì)自動(dòng)的判別原始碼是否經(jīng)過(guò)變動(dòng)了倘感,而自動(dòng)更新執(zhí)行檔放坏。
?為什么要使用make?
假設(shè)老玛,現(xiàn)在一個(gè)項(xiàng)目里面包含了100個(gè)程序文件淤年,如果要對(duì)這個(gè)項(xiàng)目進(jìn)行編譯,那么光是編譯指令就有100條蜡豹。如果要重新進(jìn)行編譯互亮,那么就又得像之前一樣重新來(lái)一遍。這樣重復(fù)且繁瑣的工作實(shí)在是讓我們很不爽啊余素。所以,用make來(lái)進(jìn)行操作炊昆,間接調(diào)用gcc豈不是很方便桨吊?如果我們更動(dòng)過(guò)某些原始碼檔案,則 make 也可以主動(dòng)的判斷哪一個(gè)原始碼與相關(guān)的目標(biāo)文件檔案有更新過(guò)凤巨, 并僅更新該檔案视乐。這樣可以減少重新編譯所需要的時(shí)間,也會(huì)更加方便敢茁。
?makefile又是干什么的佑淀?
makefile其實(shí)就是一個(gè)文檔,里面定義了一系列的規(guī)則指定哪些文件需要先編譯彰檬,哪些文件需要后編譯伸刃,哪些文件需要重新編譯谎砾,它記錄了原始碼如何編譯的詳細(xì)信息! makefile一旦寫好捧颅,只需要一個(gè)make命令景图,整個(gè)工程完全自動(dòng)編譯,極大的提高了軟件開發(fā)的效率碉哑。
先看一下makefile的規(guī)則:
目標(biāo)(target):目標(biāo)文件1 目標(biāo)文件2
<Tab>gcc -o 欲建立的執(zhí)行文件 目標(biāo)文件1 目標(biāo)文件2
目標(biāo)(target)就是我們想要建立的信息挚币,而目標(biāo)文件就是具有相關(guān)性的 object files ,建立執(zhí)行文件的語(yǔ)法就是以 <tab> 按鍵開頭的那一行扣典!特別留意妆毕,『 命令行必須要以 tab 按鍵作為開 頭』才行!它的規(guī)則基本上是這樣的: ?在 makefile 當(dāng)中的 # 代表批注贮尖;
?<tab> 需要在命令行 (例如 gcc 這個(gè)編譯程序指令) 的第一個(gè)字符笛粘;
?標(biāo)的 (target) 與相依檔案(就是目標(biāo)文件)之間需以『 :』隔開。
下面舉個(gè)例子說(shuō)明:
先分別創(chuàng)建三個(gè)文件远舅,如圖
創(chuàng)建一個(gè)makefile文件闰蛔,然后進(jìn)行規(guī)則編寫
現(xiàn)在就可以使用make命令編譯文件了,這樣是不是很方便呢图柏?
如果不想讓編譯規(guī)則顯示在屏幕上序六,只要在makefile里規(guī)則編寫前加個(gè)@它就不會(huì)顯示了~
如果現(xiàn)在再對(duì)文件編譯一次會(huì)發(fā)生什么?嘿嘿蚤吹,大家可以自己試一下例诀。
如果想要下達(dá)一 個(gè)指令就直接清除掉所有的目標(biāo)文件與執(zhí)行文件,又該怎么做呢裁着?
我們可以在makefile里面定義一個(gè)clean繁涂,執(zhí)行rm的操作。但是有一點(diǎn)要注意的是二驰,在這里我們最好使用偽目標(biāo)進(jìn)行操作扔罪。makefile里偽目標(biāo)用.PHONY進(jìn)行聲明。當(dāng)一個(gè)目標(biāo)被聲明為偽目標(biāo)后桶雀,make在執(zhí)行規(guī)則時(shí)不會(huì)去試圖去查找隱含規(guī)則來(lái)創(chuàng)建它矿酵。這樣就提高了make的執(zhí)行效率,也解決了文件目錄中如果出現(xiàn)名為clean文件矗积,clean操作不被執(zhí)行的問(wèn)題全肮。
來(lái)源:https://www.cnblogs.com/qiaopei/p/5550168.html