dongpiansui8755 2016-06-07 13:13
浏览 31
已采纳

如何编写包含多个二进制文件的软件包?

I've seen this discussed in various places, with answers like 'use a cmd/foo, cmd/bar' type folder structure.

This does not work for me.

This works:

$ 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

and building it:

go build ./src/cmd/bin2
go build ./src/cmd/bin1

However, I can't figure out what variation on:

go build ./src/...

I might need to build all such binaries in one step.

This layout:

$ 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  .

Seems totally unusable. No combination of go build ... commands seems to build bin1 or bin2.

The best I can get is go build cmd/bin1/main.go which gives me a binary called 'main'. Not helpful.

So, specifically and in detail, including the go build command, that actually builds the individual binaries, how do you do this?

...and why is the default advice that people keep giving to use a top level cmd folder? How do you build these binaries if you do?

  • 写回答

3条回答 默认 最新

  • duanjuelu8874 2016-06-07 13:46
    关注

    If you don't want to install the binaries into $GOPATH/bin, you could do what other open source projects do, which is create a script.

    Most of the projects out there have make files and build scripts for producing multiple binaries.

    In your case, you could build a script that iterates over the packages in cmd, and run go build on each.

    cd $GOPATH/someProject
    for CMD in `ls cmd`; do
      go build ./cmd/$CMD
    done
    

    This results in:

    [root@node1 test]# ls $GOPATH/someProject
    bin1  bin2  cmd
    

    Couple of trending projects that you can look at:

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 怎样才能让鼠标沿着线条的中心线轨迹移动
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?