CMake是什麼?有什麼用

2021-09-21 07:17:24 字數 1295 閱讀 7428

cmake

cmake是乙個跨平台的編譯(build)工具,可以用簡單的語句來描述所有平台的編譯過程。

cmake能夠輸出各種各樣的makefile或者project檔案,能測試編譯器所支援的c++特性,類似unix下的automake。

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

什麼是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經典教程:

CMake是什麼?有什麼用?

原創 andrewzhou924 最後發布於2018 05 19 09 05 20 閱讀數 10989 收藏 發布於2018 05 19 09 05 20 分類專欄 學習筆記 展開cmake是乙個跨平台的編譯 build 工具,可以用簡單的語句來描述所有平台的編譯過程。cmake能夠輸出各種各樣的m...

nginx是什麼?有什麼用?

一句話概述 nginx是乙個使用c語言編寫的 開源 輕量級 高效能的web伺服器及反向 伺服器軟體,同時也是乙個 imap pop3 smtp 伺服器。由 igor sysoev 為俄羅斯訪問量第二的 rambler.ru 站點開發的,伊戈爾 賽索耶夫建立並於2004年首次公開發布,2011年成立同...

儲存過程是什麼?有什麼用?有什麼

儲存過程 stored procedure 是一組為了完成特定功能的 sql 語句集,經編譯後存 儲在資料庫中。使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執 行它。儲存過程是 sql 語句和可選控制流語句的預編譯集合,以乙個名稱儲存並作為乙個 單元處理。儲存過程儲存在資料庫內...