golang內建了很多go commands可以幫助我們完成go每個階段的開發工作,但是很多時候我們需要分享我們的**給其他人,初次看到我們**工程的人可能並不知道怎麼讓它跑起來。當然你也可以通過readme.md
或者其他方式來告知讀者。
但對於那些只想快速構建程式的人來說,使用makefile很好得抽象了技術細節,當我們看到makefile檔案時自然能想到使用make或者make install來構建程式。從此告別記憶長串的命令瘋狂敲鍵盤 偶爾還會敲錯的尷尬場景????
比如:
go build -o hello hello.go
./hello
使用makefile,我們可以很輕鬆自定義乙個target完成這個任務
.phony: buildandrun
bin_file=hello
buildandrun:
@go build -o "$" hello.go
./"$"
然後我們就可以用如下命令完成工作了
make
./"hello"
hello world
我們真正上線構建編譯時的命令可能是這樣的 :
go install -tags="$" -ldflags "-x version.version=$(version) -x version.date=$(date) -x version.commit=$(commit) -x version.branch=$(branch) -w -s" -gcflags=all="-n -l " ./...
裝配上makefile,我們僅僅敲4個字元make
即可,我們開發過程中,不同階段需要幹不同的事兒,
makefile的goal機制對這種情況進行了很好的抽象,以下是我工作當中的makefile的配置,雖然不是很複雜但真的很有用。
.phony: all build clean run check cover lint docker help
bin_file=hello
all: check build
build:
@go build -o "$"
clean:
go clean
rm --force "xx.out"
test:
go test
check:
go fmt ./
go vet ./
cover:
go test -coverprofile xx.out
go tool cover -html=xx.out
run:
./"$"
lint:
golangci-lint run --enable-all
docker:
@docker build -t leo/hello:latest .
help:
@echo "make 格式化go** 並編譯生成二進位制檔案"
@echo "make build 編譯go**生成二進位制檔案"
@echo "make clean 清理中間目標檔案"
@echo "make test 執行測試case"
@echo "make check 格式化go**"
@echo "make cover 檢查測試覆蓋率"
@echo "make run 直接執行程式"
@echo "make lint 執行**檢查"
@echo "make docker 構建docker映象"
使用makefile來管理我們程式的構建,減少了大量輸入、拼寫錯誤,簡化構建專案的難度。真實線上環境配合ci/cd更佳,如果你還沒有嘗試使用makefile,那真的可以試試。 使用autotools生成makefile
接下來就要正式步驟 1,autoscan 生成了一乙個configure.scan檔案。編輯它,增加巨集宣告 am init automake hello,1.0 和ac config files makefile 然後儲存為configure.ac。其實configure.scan就是乙個模板。p...
Linux gcc編譯過程及Makefile檔案
選項 含義 o 指定輸出檔名稱 e只預處理 s只編譯 c編譯和彙編,但是不鏈結 巨集的替換,處理預處理指令,刪除注釋,include的檔案加入到該檔案,新增行號和檔案的標識 gcc e main.c o main.i檔案一下變大很多,檢視內容是stdio.h的函式定義等內容 由高階語言,生成彙編 g...
asp搭配mysql 讓ASP搭配MYSQL
讓asp搭配mysql 所需要工具 mysql 4.1.11 win32 myodbc 3.51.11 1 dll myodbc 3.51.11 1 win mysqlcc 0.9.4 win32 註冊檔案mydbc.reg regedit4 hkey local machinesoftwareod...