make是一個命令工具,是一個解釋makefile中指令的命令工具。通常來講,大多數的IDE都有這個命令,好比:Delphi的make,Visual C++的nmake,Linux下GNU的make。linux
這些 Make 工具遵循着不一樣的規範和標準,所執行的 Makefile 格式也千差萬別。程序員
這樣就帶來了一個嚴峻的問題:若是軟件想跨平臺,必需要保證可以在不一樣平臺編譯。而若是使用上面的 Make 工具,就得爲每一種標準寫一次 Makefile ,這將是一件讓人抓狂的工做。 工具
makefile成爲了一種在工程方面的編譯方法。 makefile一般依賴於你當前的編譯平臺,並且編寫makefile的工做量比較大,解決依賴關係時也容易出錯。性能
這就是make和makefile二者之間的關係。make以後生成obj中間文件,再link一下就生成可執行文件了。學習
CMake就是針對上面問題所設計的工具:它首先容許開發者編寫一種平臺無關的 CMakeList.txt 文件來定製整個編譯流程,而後再根據目標用戶的平臺進一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。從而作到「Write once, run everywhere」。顯然,CMake 是一個比上述幾種 make 更高級的編譯配置工具。操作系統
相似Make工具的功能,CMake工具就是「讀取」並執行CMakelists.txt文件中的語句,來生成對應的Makefile。而後開發者就能夠經過Make工具來「執行」Makefile了。.net
在 linux 平臺下使用 CMake 生成 Makefile 並編譯的流程以下:設計
cmake PATH
或者 ccmake PATH
生成 Makefile 1 1ccmake
和 cmake
的區別在於前者提供了一個交互式的界面。。其中, PATH
是 CMakeLists.txt 所在的目錄。make
命令進行編譯。
makefile的目的是爲了實現自動編譯的目的,會用到make工具去執行makefile上的編譯指令。並且不一樣平臺的makefile文件編寫規則不同。調試
其實手動編寫makefile是一件讓人抓狂的事,並且也很愚蠢。
應該使用cmake工具自動生成makefile。這樣的話會編寫CMakelists.txt就行了。
其實這些編譯相關的工做如今大多都交給IDE去完成了。做爲知識面的擴展和底層原理的理解仍是有必要的。
======================================================
IDE的功能:
代碼編輯、分析功能、編譯功能、調試功能;
IDE的優缺點:
=================================================
參考連接:
Cmake入門實戰:https://www.hahack.com/codes/cmake/