CMake是什麼?有什麼用? CMake是什麼?有什麼用?

CMake是什麼?有什麼用?

CMake

CMake是一個跨平臺編譯(Build)工具,可以用簡單的語句來描述所有平臺的編譯過程。

CMake能夠輸出各種各樣的makefile或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。

假如我們有一個深度學習框架的部分工程列表,裏面有超過40個互相調用的工程共同組成,一些用於生成庫文件,一些用於實現邏輯功能。他們之間的調用關係複雜而嚴格,如果我想在這樣複雜的框架下進行二次開發,顯然只擁有它的源碼是遠遠不夠的,還需要清楚的明白這幾十個項目之間的複雜關係,在沒有原作者的幫助下進行這項工作幾乎是不可能的。

即使是原作者給出了相關的結構文檔,對新手來說建立工程的過程依舊是漫長而艱辛的,因此CMake的作用就凸顯出來了。原作者只需要生成一份CMakeLists.txt文檔,框架的使用者們只需要在下載源碼的同時下載作者提供的CMakeLists.txt,就可以利用CMake,在”原作者的幫助下“進行工程的搭建



什麼是makefile?

或許很多Winodws的程序員都不知道這個東西,因爲那些Windows的IDE都爲你做了這個工作,但我覺得要作一個好的和professional的程序員,makefile還是要懂。這就好像現在有這麼多的HTML的編輯器,但如果你想成爲一個專業人士,你還是要了解HTML的標識的含義。特別在Unix下的軟件編譯,你就不能不自己寫makefile了,會不會寫makefile,從一個側面說明了一個人是否具備完成大型工程的能力。因爲,makefile關係到了整個工程的編譯規則。一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要後編譯,哪些文件需要重新編譯,甚至於進行更復雜的功能操作,因爲makefile就像一個Shell腳本一樣,其中也可以執行操作系統的命令。makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大多數的IDE都有這個命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可見,makefile都成爲了一種在工程方面的編譯方法。



爲什麼使用makefile:

對於一個大型軟件,其編譯、維護是一個複雜而耗時的過程。它涉及到大量的文件、目錄,這些文件可能是在不同的時間、由不同的人、在不同的地方分別寫的,其中一些是程序,有些是數據,有些是文檔,有些是衍生文件。甚至參與開發的人員也不一定清楚所有文件的細節,包括如何處理它們。此外,構成軟件的文件數目可能達到成百上千,甚至成千上萬個,開發過程中當修改了少量幾個文件後,往往只需要重新編譯、生成少數幾個文件。有效地描述這些文件之間的依賴關係以及處理命令,當個別文件改動後僅執行必要的處理,而不必重複整個編譯過程,可以大大提高軟件開發的效率。



CMake和makefile

Cmake是用來makefile的一個工具:讀入所有源文件之後,自動生成makefile。




附上makefile經典教程:

https://blog.csdn.net/ruglcc/article/details/7814546/



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