最近有小夥伴諮詢我去編譯執行一個程式。我一開始以為是CMakeLists,結果發現是makefile。
什麼是Makefile
Makefile是一種用於自動化構建和管理程式的工具,它定義了專案中檔案的依賴關係和構建步驟,幫助程式設計師自動化編譯、連結和打包程式,從而提高軟體開發效率。
Makefile的主要作用包括:
- 管理複雜的編譯過程:在一個大型專案中,原始檔可能數量眾多,分佈在不同的目錄和模組中。Makefile透過定義一系列規則,指定哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至進行更復雜的功能操作。
- 自動化編譯:Makefile能夠根據檔案的最後修改時間自動發現更新過的檔案,減少不必要的編譯工作。當某個檔案或其依賴項更新時,Makefile只會重新編譯受影響的檔案,而不是整個專案,從而提高了編譯效率。
- 靈活性和可維護性:Makefile允許定義變數和規則,使得構建過程更加靈活和可維護。開發人員可以根據專案的需求修改Makefile,而不需要修改實際的編譯命令。
- 跨平臺使用:Makefile是一種跨平臺的工具,可以在不同的作業系統上使用,例如Linux、Unix和Windows等,這使得它成為一種通用的構建解決方案。
如何解析Makefile
這裡需要借用make工具。
1、下載make工具
開啟make官網,找到下載部分
https://www.gnu.org/software/make/#download
可以選擇以下幾種下載方式
或者直接訪問https://ftp.gnu.org/gnu/make/
下載最新版本,解壓到本地
執行build_w32.bat可以生成make工具的二進位制檔案。
但是這裡有個前提,需要準備GCC或MSVC環境
這裡兩種環境的準備都介紹一下
GCC環境
GCC(GNU Compiler Collection,GNU編譯器套件)是由GNU開發的程式語言編譯器。
官方下載地址:https://gcc.gnu.org/mirrors.html
但是這些映象地址都在國外,下載比較慢,而且下載回來還得自己編譯。
這裡提供一個比較方便的辦法,直接下載codeblocks帶mingw版本,可以戳這裡下載
安裝codeblocks後,在環境變數中新增MinGW的路徑。