如何在Go中配置二进制名称而不更改路径

shi*_*pei 7 go

我正在用Go开发一个小工具.最近,我注意到需要从shell脚本调用该工具,因为它使用的是shell函数.

假设我的工具被调用atool.所以,go build生成一个二进制文件atool,我的工具有一个Go结构github.com/myaccount/atool.现在,我想构建atool-cli二进制文件go build,并从shell脚本调用它atool.我怎样才能做到这一点?

我想到的唯一方法是改变结构github.com/myaccuont/atool-cli.但我不想这样做,因为已经宣布了,而且,路径似乎有点滑稽的名字.

eli*_*rar 12

只是为了让我的评论"正式":

go build -o atool-cli github.com/you/atool
Run Code Online (Sandbox Code Playgroud)

  • 是的,但是使用“go install”时怎么样?希望得到一些默认写入“$GOPATH/bin”的东西......也许你的答案可以添加如何把它放在那里?`go install` 不是也在幕后做更多的事情,比 go build 做的更多吗? (2认同)

Jim*_*imB 8

将组件自身打包为库,并提供主包的一种方法是将其主要入口点放在子目录中.

你可以有一个maingithub.com/myaccount/atool/atool-cli,导入github.com/myaccount/atool和实现func main().一些包含多个命令的包甚至都有一个/cmd/目录,其中包含多个可以构建的cli工具(参见camlistore示例)