Makefile命令替换无法接收参数,求Go项目构建命令正确写法
问题解决:Makefile中Go构建命令的正确变量定义
错误的根源是你给GO_BUILD变量加了单引号,Make会把'go build -ldflags "-s -w" -a -installsuffix cgo'整个字符串当作一个完整的命令名去查找,而不是解析成go build命令加后续参数,自然找不到对应的可执行文件。
正确的写法有两种:
方式一:直接移除单引号
Makefile的变量定义不需要用单引号包裹命令,直接写命令内容即可:
GO_BUILD := go build -ldflags "-s -w" -a -installsuffix cgo .PHONY: build-cli build-cli: @$(GO_BUILD) -o cli ./cli
方式二:拆分复杂参数(更推荐)
把ldflags的参数单独拆成变量,让Makefile结构更清晰,也能避免参数解析的潜在问题:
LDFLAGS := -s -w GO_BUILD := go build -ldflags "$(LDFLAGS)" -a -installsuffix cgo .PHONY: build-cli build-cli: @$(GO_BUILD) -o cli ./cli
执行make build-cli就能正常构建了。
内容的提问来源于stack exchange,提问作者pkaramol
相关产品推荐
相关产品推荐

