去项目有2个可执行文件

时间:2014-06-18 17:56:30

标签: go structure

大家好我是Golang的新手,我正在写一个玩具客户端和服务器应用程序,只是为了学习这些库。

但我有项目文件夹:

philipherron@Philips-iMac {~/workspace/gospace/src/github.com/redbrain/station} $ echo $GOPATH
/Users/philipherron/workspace/gospace

我想要2个二进制文件:

  • client.go
  • server.go

但是当我建立时,我得到了:

philipherron@Philips-iMac {~/workspace/gospace/src/github.com/redbrain/station} $ go build github.com/redbrain/station/
# github.com/redbrain/station
./server.go:5: main redeclared in this block
    previous declaration at ./client.go:5

我想这是因为它看起来像是在同一个包中制作主电源。

所以我尝试创建一个客户端和一个服务器子目录并在每个子目录中都有二进制文件,但我得到了:

philipherron@Philips-iMac {~/workspace/gospace/src/github.com/redbrain/station} $ go build github.com/redbrain/station/client
go install github.com/redbrain/station/client: build output "client" already exists and is a directory

我想这是因为我的布局为:

$ tree
.
├── client
│   └── client.go
└── server
    └── server.go

2 directories, 4 files

不确定如何解决这个问题,将同一个客户端和服务器放在同一个目录中会很好,但这可能与我应该如何处理这个问题有关?

2 个答案:

答案 0 :(得分:7)

只需重命名您的.go文件即可。编译器正试图写入'客户端'但是'客户'已被目录占用。

$ tree
.
├── client
│   └── main.go
└── server
    └── main.go

2 directories, 4 files

和/或创建一个脚本,使用不同的名称go build -o client client/main.go

输出它们

答案 1 :(得分:0)

以及上面的单独包,如果你设置GOBIN = $ GOPATH / bin,那么它将在bin目录中创建客户端和服务器,它不会与目录名冲突