gpt4 book ai didi

go - 构建 go 项目时忽略 ldflags

转载 作者:行者123 更新时间:2023-12-04 07:28:25 27 4
gpt4 key购买 nike

我想在一个存储库中有多个二进制文件,但也想通过 ldflags 设置版本选项。
在存储库中只有一个二进制文件我没有问题,它可以工作,但是对于多个二进制文件的新结构似乎不起作用。
我在 github 上建立了一个简单的项目.
结构简单

cmd/
- server/main.go
- service/main.go
libcommon/
- version.go
- ...
go.mod
Makefile
版本.go
package libcommon

var (
Version = "dev"
Build = "now"
)
生成文件
BUILDDIR = bin
VERSION := $(shell git describe --tags --always --dirty)
BUILD := $(shell date +%Y-%m-%d\ %H:%M)
LDFLAGS=-ldflags="-w -s -X 'libcommon.Version=${VERSION}' -X 'libcommon.Build=${BUILD}'"

go build ${LDFLAGS} -o $(BUILDDIR)/ ./...
我打电话 make install并将二进制文件放入 bin/目录,但是当我运行它时,它只是打印出默认值,而不是我认为在那里的那些。
关于如何在此布局中使用 ldflags 设置版本的任何想法?
提前致谢。

最佳答案

使用 -ldflags 正确设置变量你必须用 full package import path 限定变量名:
在生成文件中:

LDFLAGS=-ldflags="-w -s \
-X 'mymodule.com/path/to/libcommon.Version=${VERSION}' \
-X 'mymodule.com/path/to/libcommon.Build=${BUILD}'"

build:
go build ${LDFLAGS} -o $(BUILDDIR)/ ./...```

关于go - 构建 go 项目时忽略 ldflags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68100849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com