【发布时间】:2021-10-13 02:52:45
【问题描述】:
我在很多地方都看到过这个问题,答案是“使用 cmd/foo,cmd/bar”类型的文件夹结构。
这对我不起作用。
这行得通:
$ du -a
8 ./src/cmd/bin1/main.go
8 ./src/cmd/bin1
8 ./src/cmd/bin2/main.go
8 ./src/cmd/bin2
16 ./src/cmd
8 ./src/shared/foo/foo.go
8 ./src/shared/foo
8 ./src/shared
24 ./src
并构建它:
go build ./src/cmd/bin2
go build ./src/cmd/bin1
但是,我不知道有什么变化:
go build ./src/...
我可能需要一步构建所有此类二进制文件。
这个布局:
$ du -a
8 ./cmd/bin1/main.go
8 ./cmd/bin1
8 ./cmd/bin2/main.go
8 ./cmd/bin2
16 ./cmd
8 ./src/shared/foo/foo.go
8 ./src/shared/foo
8 ./src/shared
8 ./src
24 .
似乎完全无法使用。 go build ... 命令的组合似乎无法构建 bin1 或 bin2。
我能得到的最好的结果是go build cmd/bin1/main.go,它给了我一个名为“main”的二进制文件。没有帮助。
那么,具体而详细地,包括go build 命令,它实际上构建了单个二进制文件,你是如何做到这一点的?
...为什么人们一直给出使用顶级cmd 文件夹的默认建议?如果这样做,您如何构建这些二进制文件?
【问题讨论】:
-
签出
https://github.com/spf13/cobra,您会将其指向cmd/main.go,其他命令源文件将用作例如main doXmain printY -
您可以使用 cobra 添加子命令,但它不会按预期生成多个二进制文件。
标签: go