<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Go官方 提供一個名為go的命令,該命令可以用來下載go的依賴,構建安裝go應用,執行和測試 Go程式等等, 我們比較常用的比如go get, go mod, go run , go test等等。
但是,我們在 Go 專案中為了簡化使用 go 命令的複雜性,規範團隊使用 go 命令的方式,提升個人或團隊的生產力,我們會使用makefile指令碼,使用make來處理一些任務。
makefile可以看作是make工具的指令碼檔案, 而make主要用來處理一系列命令。常用的比如用來編譯和打包檔案, 在C/C++的編譯打包中應用最廣泛了。
makefile檔案結構其實也比較簡單:
target ... : prerequisites ... command ... ...
target
可以是一個object file(目標檔案),也可以是一個執行檔案,還可以是一個標籤(label)。對於標籤這種特性,在後續的“偽目標”章節中會有敘述。
prerequisites
生成該target所依賴的檔案和/或target
command
該target要執行的命令(任意的shell命令)
makefile檔案主要定義了執行目標應用, 它依賴哪些檔案或者目標, 以及當前目標需要執行的command指令。有依賴項,他會先去執行依賴項的command。
具體的學習可以參考:makefile介紹 — 跟我一起寫Makefile 1.0 檔案
這裡我們使用makefile來簡單實現一個將go應用變異打包為不同系統的應用的範例:
.PHONY: all run clean help APP = task ## linux: 編譯打包linux .PHONY: linux linux: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build $(RACE) -o ./bin/${APP}-linux64 ./main.go ## win: 編譯打包win .PHONY: win win: CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build $(RACE) -o ./bin/${APP}-win64.exe ./main.go ## mac: 編譯打包mac .PHONY: mac mac: CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build $(RACE) -o ./bin/${APP}-darwin64 ./main.go build: @go build -o ${APP} ## 編譯win,linux,mac平臺 .PHONY: all all:win linux mac run: @go run ./ .PHONY: tidy tidy: @go mod tidy ## test: Run unit test. .PHONY: test test: @$(MAKE) go.test ## 清理二進位制檔案 clean: @if [ -f ./bin/${APP}-linux64 ] ; then rm ./bin/${APP}-linux64; fi @if [ -f ./bin/${APP}-win64.exe ] ; then rm ./bin/${APP}-win64.exe; fi @if [ -f ./bin/${APP}-darwin64 ] ; then rm ./bin/${APP}-darwin64; fi help: @echo "make - 格式化 Go 程式碼, 並編譯生成二進位制檔案" @echo "make mac - 編譯 Go 程式碼, 生成mac的二進位制檔案" @echo "make linux - 編譯 Go 程式碼, 生成linux二進位制檔案" @echo "make win - 編譯 Go 程式碼, 生成windows二進位制檔案" @echo "make tidy - 執行go mod tidy" @echo "make run - 直接執行 Go 程式碼" @echo "make clean - 移除編譯的二進位制檔案" @echo "make all - 編譯多平臺的二進位制檔案"
專案地址:kratos/Makefile at main · go-kratos/kratos · GitHub
kratos應用使用makefile檔案打包,它比我們範例多新增了go工具的環境設定部分,還有自動生成使用gen工具編譯proto檔案,我們可以根據實際專案需要新增。
iam身份識別系統使用makefile
專案地址:
iam專案使用makefile更多,它分為一個入口的makefile檔案,同時它引入了專案scripts目錄下的多個功能的指令碼,如下圖。 它將每個功能部分乾的事情分拆到不同指令碼檔案,這樣更清晰。提供的功能也更清晰細緻。
到此這篇關於go使用makefile指令碼編譯應用的文章就介紹到這了,更多相關gomakefile編譯應用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45