我使用构建标记来禁用一个功能,例如:
来源
- abc_enable.go
// +build abc
package main
import (
"big-package"
"bigbig"
)
...
- abc_disable.go
// +build !abc
// empty
生成cmd
- 启用:
go build --tags abc
- 禁用:
go build
此方法始终有效。
问题
但我发现当abc被禁用时,构建二进制大小仍然很大。
- 保留abc_enable.go,
--tags abc
。尺寸高达11M - 保留abc_enable.go,没有标签。大小高达11M
- 手动删除abc_enable.go,大小降至5M
是否有任何链接选项或构建选项可以修复此问题
构建约束
为了区分构建约束和包文档的生成约束必须后面跟一个空行。
这意味着原始代码片段中的// +build abc
不被视为编译约束。要解决此问题,您必须在package子句的上方添加一个空行。
// +build abc
package main
import (
"big-package"
"bigbig"
)
...