分享一个 go 的 makefile,请指教 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
dafsic
V2EX    Go 编程语言

分享一个 go 的 makefile,请指教

  •  1
     
  •   dafsic 2019-12-19 09:54:57 +08:00 4844 次点击
    这是一个创建于 2132 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不是说多牛逼,也是从网上各种地方抄来的,就是自己写代码够用了,需要的可以参考,好的优化建议也提提,力求简单明了。

    APP:=xxx PACKAGE:=github.com/xxx/xxx GO_VERSION:=$(shell go version) BUILD_TIME:=$(shell date +%Y-%m-%dT%H:%M:%S%z) COMMIT_HASH:=$(shell git rev-parse --short=8 HEAD || echo unknown) GIT_BRANCH:=$(shell git rev-parse --abbrev-ref HEAD) GIT_TAG:=$(shell git tag) GO_LDFLAGS += -X '$(PACKAGE)/version.BUILD_TIME=$(BUILD_TIME)' GO_LDFLAGS += -X '$(PACKAGE)/version.GO_VERSION=$(GO_VERSION)' GO_LDFLAGS += -X '$(PACKAGE)/version.COMMIT_HASH=$(COMMIT_HASH)' GO_LDFLAGS += -X '$(PACKAGE)/version.GIT_BRANCH=$(GIT_BRANCH)' GO_LDFLAGS += -X '$(PACKAGE)/version.PROJECT_VERSION=$(GIT_TAG)' GO_LDFLAGS += -s -w .PHONY: default darwin linux clean check default: linux ## Build the default binary file (default: linux) check: ## Check working tree is clean or not ifneq ($(shell git status -s),) $(error You must run git commit) endif linux: check ## Build the ELF binary file GOOS=linux GOARCH=amd64 CGO_ENABLE=0 go build -mod=readonly -ldflags "$(GO_LDFLAGS)" -o $(APP) . darwin: check ## Build the Mach-O binary file GOOS=darwin GOARCH=amd64 CGO_ENABLE=0 go build -mod=readonly -ldflags "$(GO_LDFLAGS)" -o $(APP) . clean: ## Remove previous build go clean help: ## Display this help screen @grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' 
    11 条回复    2019-12-19 13:06:14 +08:00
    MeteorCat
        1
    MeteorCat  
       2019-12-19 09:57:50 +08:00 via Android
    用 markfile 调 shell 来搞 golang,俄罗斯套娃?
    lhx2008
        2
    lhx2008  
       2019-12-19 09:59:16 +08:00 via Android
    没看明白和直接调 go 命令的区别
    dafsic
        3
    dafsic  
    OP
       2019-12-19 10:10:30 +08:00
    顺便解释一句作用,1.mac 上写代码,交叉编译成 elf 文件。2.将 git 的分支、commit id、tag、编译时间、go 版本信息编译到 elf 中。
    tiedan
        4
    tiedan  
       2019-12-19 10:18:09 +08:00
    感觉直接用 shell 脚本会不会更好
    dreamerlv3ex
        5
    dreamerlv3ex  
       2019-12-19 10:18:28 +08:00
    我还以为是真的 makefile,吓我一跳。
    tairan2006
        6
    tairan2006  
       2019-12-19 10:27:32 +08:00
    @lhx2008 用脚本少打点字
    LANB0
        7
    LANB0  
       2019-12-19 11:45:05 +08:00
    这一看就是从 C/C++转过去的,和百度那个 BFE 一个路子
    petelin
        8
    petelin  
       2019-12-19 12:32:18 +08:00 via iPhone
    就是起个别名
    wakaka
        9
    wakaka  
       2019-12-19 12:50:45 +08:00
    撸点复杂的工作还可以,比如生成 grpc 的 pb 文件等等
    ppphp
        10
    ppphp  
       2019-12-19 12:53:16 +08:00
    GIT_TAG:=$(shell git tag)
    这个能行吗。。
    dyrone
        11
    dyrone  
       2019-12-19 13:06:14 +08:00
    部门描述:

    代码平台(代码托管、代码效能、代码智能)是阿里巴巴一站式智能研发协同平台的核心服务,对内为阿里几万产品研发相关人员提供工具支撑,对外是阿里云开发者生态关键一环。“Work Like Alibaba”将成为中国及至全世界开发者最潮流的口号。

    本职位主要职责是负责代码平台基础设施的架构演进、Git 核心技术开发,代码领域技术趋势跟踪、下一代代码平台预言。我们是一群懂代码,爱 Git,有技术有梦想的工程师。让我们一起携手解决跨地域、分布式、海量代码托管等世界级业务和技术难题,为阿里巴巴集团内部、生态伙伴以及云上开发者服务。


    我们的使命:帮助企业让更多的工作内容和工作行为 “有意义” 的数字化。
    我们的愿景:服务一亿人的数字化办公。


    岗位描述:
    1、代码平台后端大规模服务器集群的分布式架构演进;
    2、服务器计算、存储资源的再平衡、故障修复与隔离,服务器智能运维;
    3、基于分布式存储的下一代代码平台,实现低延迟、高效率在线编码;
    4、Git 核心代码开发,业界趋势跟踪,保持技术领先,优化用户体验等等。


    岗位要求:
    1、3 到 8 年的工作经验,精通 Go 语言、C 语言或 java 语言的一种。
    2、熟悉分布式一致性协议,有分布式系统开发经验。
    3、熟悉微服务架构,RPC 的基本原理、gRPC、pb 等原理和使用,加分。
    4、热爱技术,有较强的学习能力、良好的团队合作能力、抗压能力。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4481 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 05:35 PVG 13:35 LAX 22:35 JFK 01:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86