我不確定這將如何工作,但我基本上是在嘗試編寫一個命令行應用程序,我可以從中運行命令和子命令。我正在使用這個流行的第三方庫來解析命令行參數(shù):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命令。有沒有辦法通常使用命令行應用程序或第三方包來創(chuàng)建命令行應用程序,以便我可以從命令行運行greet而不是myproject作為第一個命令運行?
1 回答

長風秋雁
TA貢獻1757條經(jīng)驗 獲得超7個贊
go build [-o output] [-i] [build flags] [packages]
編譯單個主包時,build 將生成的可執(zhí)行文件寫入以第一個源文件命名的輸出文件('go build ed.go rx.go' 寫入 'ed' 或 'ed.exe')或源代碼目錄( 'go build unix/sam' 寫入 'sam' 或 'sam.exe')。編寫 Windows 可執(zhí)行文件時會添加“.exe”后綴。
當編譯多個包或單個非主包時,build 編譯包但丟棄生成的對象,僅用作檢查包是否可以構建。
-o 標志,僅在編譯單個包時允許,強制構建將生成的可執(zhí)行文件或對象寫入指定的輸出文件,而不是最后兩段中描述的默認行為。
嘗試像這樣構建它,如果您希望它可以從任何地方訪問, go build -o greet
請不要忘記將生成的可執(zhí)行文件添加到您的文件中。$PATH
或者,您可以 1) 創(chuàng)建一個別名;或 2)符號鏈接到實際的可執(zhí)行文件:
alias greet='myproject'
ln -s $GOPATH/bin/myproject greet
(鏈接將在當前目錄中創(chuàng)建)
- 1 回答
- 0 關注
- 210 瀏覽
添加回答
舉報
0/150
提交
取消