CMake安裝#
首先需要確認是否安裝好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、進入解壓后的文件:cd cmake-3.10.0
5、開始安裝
sudo ./bootstrap
sudo make
sudo make install
6.卸載
sudo make uninstall
Makefile文件使用#
什么是makefile?或許很多Winodws的程序員都不知道這個東西,因為那些Windows的IDE都為你做了這個工作,但我覺得要作一個好的和professional的程序員,makefile還是要懂。這就好像現(xiàn)在有這么多的HTML的編輯器,但如果你想成為一個專業(yè)人士,你還是要了解HTML的標識的含義。特別在Unix下的軟件編譯,你就不能不自己寫makefile了,會不會寫makefile,從一個側(cè)面說明了一個人是否具備完成大型工程的能力。因為,makefile關(guān)系到了整個工程的編譯規(guī)則。
簡單說makefile文件的執(zhí)行可以在當前文件夾下 make##

?make是什么?
make是一個命令工具,是一個解釋makefile中指令的命令工具。它可以簡化編譯過程里面所下達的指令,當執(zhí)行 make 時,make 會在當前的目錄下搜尋 Makefile (or makefile) 這個文本文件,執(zhí)行對應的操作。make 會自動的判別原始碼是否經(jīng)過變動了,而自動更新執(zhí)行檔。
?為什么要使用make?
假設,現(xiàn)在一個項目里面包含了100個程序文件,如果要對這個項目進行編譯,那么光是編譯指令就有100條。如果要重新進行編譯,那么就又得像之前一樣重新來一遍。這樣重復且繁瑣的工作實在是讓我們很不爽啊。所以,用make來進行操作,間接調(diào)用gcc豈不是很方便?如果我們更動過某些原始碼檔案,則 make 也可以主動的判斷哪一個原始碼與相關(guān)的目標文件檔案有更新過, 并僅更新該檔案。這樣可以減少重新編譯所需要的時間,也會更加方便。
?makefile又是干什么的?
makefile其實就是一個文檔,里面定義了一系列的規(guī)則指定哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,它記錄了原始碼如何編譯的詳細信息! makefile一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發(fā)的效率。
先看一下makefile的規(guī)則:
目標(target):目標文件1 目標文件2
<Tab>gcc -o 欲建立的執(zhí)行文件 目標文件1 目標文件2
目標(target)就是我們想要建立的信息,而目標文件就是具有相關(guān)性的 object files ,建立執(zhí)行文件的語法就是以 <tab> 按鍵開頭的那一行!特別留意,『 命令行必須要以 tab 按鍵作為開 頭』才行!它的規(guī)則基本上是這樣的: ?在 makefile 當中的 # 代表批注;
?<tab> 需要在命令行 (例如 gcc 這個編譯程序指令) 的第一個字符;
?標的 (target) 與相依檔案(就是目標文件)之間需以『 :』隔開。
下面舉個例子說明:
先分別創(chuàng)建三個文件,如圖

創(chuàng)建一個makefile文件,然后進行規(guī)則編寫

現(xiàn)在就可以使用make命令編譯文件了,這樣是不是很方便呢?

如果不想讓編譯規(guī)則顯示在屏幕上,只要在makefile里規(guī)則編寫前加個@它就不會顯示了~
如果現(xiàn)在再對文件編譯一次會發(fā)生什么?嘿嘿,大家可以自己試一下。
如果想要下達一 個指令就直接清除掉所有的目標文件與執(zhí)行文件,又該怎么做呢?
我們可以在makefile里面定義一個clean,執(zhí)行rm的操作。但是有一點要注意的是,在這里我們最好使用偽目標進行操作。makefile里偽目標用.PHONY進行聲明。當一個目標被聲明為偽目標后,make在執(zhí)行規(guī)則時不會去試圖去查找隱含規(guī)則來創(chuàng)建它。這樣就提高了make的執(zhí)行效率,也解決了文件目錄中如果出現(xiàn)名為clean文件,clean操作不被執(zhí)行的問題。

來源:https://www.cnblogs.com/qiaopei/p/5550168.html