我是Go的新手,我最近创建了一个在GitHub上升的项目。我试图关注指南但是有一个紧迫的问题,为什么我的二进制文件最终会进入src/
?
我的布局是这样的:
ssm/ - Name of project
LICENSE
README.md
src/ - Source Code
files.go - All my source code is here.
src - The compiled binary ends up here
bin/ - Binaries
我将$GOPATH
设置为~/Documents/Programming/Go/
。从我的gopath,我无法键入go build ssm
,因为它cannot find package
。如果我进入目录,它会抱怨它can't load package: package .: no Go source files
。
我必须实际进入src并在那里编译,这意味着二进制文件不在bin/
中。
我做错了什么?
答案 0 :(得分:8)
请参阅https://code.google.com/p/go-wiki/wiki/GithubCodeLayout
要与go get
兼容,您的项目的包名称需要在github.com域下完全合格:
$GOPATH/
src/github.com/<user>/ssm/
.git
LICENSE
README.md
files.go
bin/
请注意,git存储库(.git)的基础与$GOPATH
不同。
此外,go build <package>
会将已编译的可执行文件输出到当前目录。如果您希望exe转到bin/
,请改用go install <package>
。
答案 1 :(得分:2)
您可以保存在工作区中的代码。工作区包含许多源文件(git,hg,svm等)。 Go工具了解布局。我们在此处不需要 Makefile 或 build.xml 。基本目录布局就是一切。如果在任何情况下如果要更改文件布局,则需要更改构建。
这是您可以遵循的一般结构,
$ GOPATH /
src/
github.com/username/repo/
mypkg/
mysrc1.go
mysrc2.go
cmd/mycmd/
main.go
bin/
mycmd
而且,这是标准工作区
$ GOPATH /
bin/fixhub # installed binary
pkg/darwin_amd64/ # compiled archives
code.google.com/p/goauth2/oauth.a
github.com/...
src/ # source repositories
code.google.com/p/goauth2/
.hg
oauth # used by package go-github
...
github.com/
golang/lint/... # used by package fixhub
.git
google/go-github/... # used by package fixhub
.git
dsymonds/fixhub/
.git
client.go
cmd/fixhub/fixhub.go # package main
go get 获取许多存储库,而 go install 构建一个二进制文件。方便快捷地进行开发很方便。并且,go社区中的每个人都遵循相同的原则。这会将 src , bin 和 pkg 放入主目录。并且,在创建我们的工作区之前, $ HOME / bin已经在我们的路径中。