为了账号安全,请及时绑定邮箱和手机立即绑定

使用 GoLang 安装命令行应用程序

使用 GoLang 安装命令行应用程序

Go
动漫人物 2022-01-17 16:34:46
我不确定这将如何工作,但我基本上是在尝试编写一个命令行应用程序,我可以从中运行命令和子命令。我正在使用这个流行的第三方库来解析命令行参数:https://github.com/urfave/cli我的问题是我有一个项目文件夹,我的 .go 文件将存放在其中:MyProject因此,即使在我的 main.go 文件中的代码中,使用他们的示例,我也有:package mainimport (  "fmt"  "os"  "github.com/urfave/cli")func main() {  app := cli.NewApp()  app.Name = "greet"  app.Usage = "fight the loneliness!"  app.Action = func(c *cli.Context) error {    fmt.Println("Hello friend!")    return nil  }  app.Run(os.Args)}当我跑步时go install,在我的 $GOPATH/bin 目录中,我实际上构建了 MyProject。然后当我MyProject从终端运行时,我得到USAGE:myproject [global options] command [command options] [arguments...]但实际上,我首先不需要myproject命令。有没有办法通常使用命令行应用程序或第三方包来创建命令行应用程序,以便我可以从命令行运行greet而不是myproject作为第一个命令运行?
查看完整描述

1 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

检查go build 命令的文档

go build [-o output] [-i] [build flags] [packages]

编译单个主包时,build 将生成的可执行文件写入以第一个源文件命名的输出文件('go build ed.go rx.go' 写入 'ed' 或 'ed.exe')或源代码目录( 'go build unix/sam' 写入 'sam' 或 'sam.exe')。编写 Windows 可执行文件时会添加“.exe”后缀。

当编译多个包或单个非主包时,build 编译包但丢弃生成的对象,仅用作检查包是否可以构建。

-o 标志,仅在编译单个包时允许,强制构建将生成的可执行文件或对象写入指定的输出文件,而不是最后两段中描述的默认行为。

尝试像这样构建它,如果您希望它可以从任何地方访问, go build -o greet请不要忘记将生成的可执行文件添加到您的文件中。$PATH


或者,您可以 1) 创建一个别名;或 2)符号链接到实际的可执行文件:

  1. alias greet='myproject'

  2. ln -s $GOPATH/bin/myproject greet (链接将在当前目录中创建)


查看完整回答
反对 回复 2022-01-17
  • 1 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信