看這篇文章以前,你是否打包Go語言開發的項目時,是直接在命令行輸入:linux
go build .
複製代碼
在開發調試時是不是:bash
go run main.go
複製代碼
而後看到開源的Go語言項目在運行時倒是:工具
make build
複製代碼
或者ui
make install
複製代碼
咱們打包運行這個過程,還有一個更加貼切的詞語叫作構建項目。spa
今天給你們介紹下Makefile
這個廣爲使用的構建工具,他是開源的,不單單適用於Go當中,C語言的項目或者C++的項目等一樣都適用。命令行
在軟件開發中,make一般被視爲一種軟件構建工具。該工具主要經由讀取一種名爲「makefile」或「Makefile」的文件來實現軟件的自動化建構。3d
它會經過一種被稱之爲「target」概念來檢查相關文件之間的依賴關係,這種依賴關係的檢查系統很是簡單,主要經過對比文件的修改時間來實現。調試
在大多數狀況下,咱們主要用它來編譯源代碼,生成結果代碼,而後把結果代碼鏈接起來生成可執行文件或者庫文件。code
不少開源項目裏面都在用到cdn
這是最近比較火的以太坊上在GitHub上的源碼截圖,其餘的我就再也不截圖了,接下來給你們介紹下怎麼使用它開構建咱們的項目。
若是你是mac的系統,系統是自帶了的,若是是linux就須要本身安裝下make,命令很簡單。
centons系統的make安裝命令:
yum install -y make
複製代碼
我這裏新建了一個工程,工程目錄是這樣:
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.
複製代碼
咱們打開咱們的終端,直接執行:
make run
複製代碼
就開始構建了,效果以下:
好了,此次就給你們分享到這裏,後面會繼續深刻。