【问题标题】:How to build executable with name other than Golang package如何使用 Golang 包以外的名称构建可执行文件
【发布时间】:2017-07-31 01:57:42
【问题描述】:

如果我的 Golang 包名称是以下之一,是否可以构建(安装、go get 等)名称为 foobar 的可执行文件:

  • github.com/username/go-foobar
  • github.com/username/foobar-tools

并且在包根目录中有main.go

【问题讨论】:

标签: go build package naming-conventions


【解决方案1】:
go build -o <your desired name>

您可以使用带有go build 的-o 开关指定可执行文件名称。对于您的示例,它看起来像: cd $GOPATH/github.com/username/go-foobar &amp;&amp; go build -o foobar。然而,你只剩下包文件夹中的可执行文件——你仍然需要以某种方式安装它。

但是,我不知道有什么方法可以为使用 go get github.com/username/go-foobar 安装您的工具的人指定。例如,请参阅此答案:https://stackoverflow.com/a/33243591/2415176

如果您不担心人们使用 go get 安装您的工具,那么您可以将这种东西包装在 Makefile 中。

【讨论】:

  • 如果您想为特定文件执行此操作 main.go 并且您想将其命名为 myapp 运行它:go build -o myapp main.go
  • 也许是一个菜鸟问题,但这不可能在代码中设置为默认值。我有一个项目要安装 ./example 目录的情况。我希望二进制名称默认为&lt;project-name&gt;-example,而不必每次都在命令行上指定。是唯一设置包名的方法吗?
  • 我想不出像@ArnoldSchrijver 这样的东西——各种特殊的源选项,如构建标签或即将到来的嵌入,我认为没有任何东西可以让您从源代码更改构建标签。我想你也许可以用go generate 的副作用破解一些东西,但这似乎是一条充满灾难的道路。最简单的可能只是一个以您想要的方式构建示例的脚本。
猜你喜欢
  • 2022-07-11
  • 1970-01-01
  • 2015-04-02
  • 2011-10-22
  • 2011-12-20
  • 1970-01-01
  • 2014-04-21
  • 2020-08-31
  • 2016-01-11
相关资源
最近更新 更多