2014-06-18 11 views
5

Hallo, ich bin ziemlich neu in Golang, ich schreibe eine Spielzeug-Client und Server-App, nur um die Bibliotheken zu lernen.Go Projekt mit 2 ausführbaren Dateien

Aber ich habe den Projektordner:

[email protected] {~/workspace/gospace/src/github.com/redbrain/station} $ echo $GOPATH 
/Users/philipherron/workspace/gospace 

Ich wollte 2 Binärdateien haben:

  • client.go
  • server.go

Aber wenn ich bauen Ich bekomme:

[email protected] {~/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 

Ich denke, das liegt daran, dass es so aussieht, als würde ich im gleichen Paket zu Netzstrom machen.

Also versuchte ich die Binärdateien in jeder von denen, einen Client und einen Server subdir und haben erstellen, aber ich bekomme:

[email protected] {~/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 

Ich denke, das liegt daran, dass ich das Layout haben:

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

2 directories, 4 files 

Nicht sicher, wie man das umgehen kann, wäre es einfach nett, den gleichen Client und Server im selben Verzeichnis zu haben, aber vielleicht ist das gegen, wie ich Dinge in gehen sollte?

+0

Der Befehl go build versucht, eine ausführbare Datei in Ihrem aktuellen Verzeichnis zu erstellen. Versuchen Sie, es aus einem Verzeichnis auszuführen, in dem keine Datei oder ein Verzeichnis mit dem Namen client existiert. – fuz

+0

Danke, ja, ich habe das nicht bemerkt danke! – redbrain

Antwort

7

benennen Sie einfach Ihre .go-Dateien um. Der Compiler versucht, auf 'client' zu schreiben, aber 'client' ist bereits vom Verzeichnis belegt.

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

2 directories, 4 files 

und/oder ein Skript erstellen, das sie mit einem anderen Namen, wie oben go build -o client client/main.go

+0

Danke, ich sehe jetzt, fühle mich so dumm, dass ich das nicht bemerkt habe, danke. – redbrain

0

zusammen mit mit separaten Paketen gibt, wenn Sie die GOBIN = $ GOPATH/sind gesetzt, dann wird es schaffen Client und Server im Verzeichnis bin und es wird nicht kollidieren mit Verzeichnisnamen

Verwandte Themen