換Make來構建你的Go語言專案吧
看這篇文章之前,你是否打包Go語言開發的專案時,是直接在命令列輸入:
go build . 複製程式碼
在開發除錯時是否是:
go run main.go 複製程式碼
然後看到開源的Go語言專案在執行時卻是:
make build 複製程式碼
或者
make install 複製程式碼
我們打包執行這個過程,還有一個更加貼切的詞語叫做構建專案。
今天給大家介紹下 Makefile
這個廣為使用的構建工具,他是開源的,不僅僅適用於Go當中,C語言的專案或者C++的專案等同樣都適用。
01 make簡介
在軟體開發中,make通常被視為一種軟體構建工具。該工具主要經由讀取一種名為“makefile”或“Makefile”的檔案來實現軟體的自動化建構。
它會通過一種被稱之為“target”概念來檢查相關檔案之間的依賴關係,這種依賴關係的檢查系統非常簡單,主要通過對比檔案的修改時間來實現。
在大多數情況下,我們主要用它來編譯原始碼,生成結果程式碼,然後把結果程式碼連線起來生成可執行檔案或者庫檔案。
很多開源專案裡面都在用到

這是最近比較火的以太坊上在GitHub上的原始碼截圖,其他的我就不再截圖了,接下來給大家介紹下怎麼使用它開構建我們的專案。
02 安裝
如果你是mac的系統,系統是自帶了的,如果是linux就需要自己安裝下make,命令很簡單。
centons系統的make安裝命令:
yum install -y make 複製程式碼
03 建立配置檔案
我這裡新建了一個工程,工程目錄是這樣:

main.go
裡面的原始碼如下:

和我們以往的專案沒啥區別,就多了一個 Makefile
檔案,如果要使用 Makefile
去構建你專案,就需要在你的專案裡面新建這個 Makefile
檔案。
這裡我貼一個簡單的 Makefile
檔案的原始碼:
BINARY_NAME=App run: go build -o bin/$(BINARY_NAME) -v ./bin/$(BINARY_NAME) 複製程式碼
解釋下上面各行的意思:
- 第一行,聲明瞭一個變數
BINARY_NAME
他的值是App
,方便後面使用 - 第二行,宣告一個
target
,其實你可以理解成一個對外的方法 - 第三行,這就是這個
target
被呼叫時執行的指令碼,這行就是build這個專案,編譯後的二進位制檔案放在當前工程根目錄下的bin
目錄下,名字是變數BINARY_NAME
的值 - 第四行,這一行就是直接執行當前
bin
目錄下的二進位制檔案
注意:第三行,第四行前面一定要用 tab
鍵縮排,否者會報下面的錯:
Makefile:3: *** missing separator.Stop. 複製程式碼