6
我正在寻找一个好的项目组织,用于使用Go编写多个组件的多平台项目。我知道从http://golang.org/doc/code.html推荐的布局,但这里提出的布局似乎不符合我的要求。Golang代码组织,用于多平台多语言项目
项目组成部分是:(写在围棋)
- 服务器(GO)
- 一些更多的客户(iOS版,Android版)
我的要求是:
- 单个git存储库中的所有组件
- 保持组件分离(例如,每个组件一个目录)
- 围棋组件可以构造成多个子包
我目前的做法:
project/ (this is the repository root)
server/
server.go (package main)
src/
server/
package1/
package1.go
...
client/
client.go (package main)
src/
client/
package2/
package2.go
...
lib/
src/
lib/
lib.go
...
client-ios/
...
client-android/
...
要建立,我用一个Makefile其
- 副本lib /到服务器/和客户端/
- 分别构建服务器/和客户端/,每次设置GOPATH到r espective目录。
它的工作原理,但感觉真的很klunky,与推荐的代码布局非常不同。
这里是我考虑的替代方案:
project/ (this is the repository root)
gospace/
src/
server/...
client/...
lib/...
client-ios/
...
client-android/
...
通过这一布局,我有一个GOPATH(gospace /)和不需要klunky Makefile文件。但是,这些组件并不像第一种替代方式那样整齐地分开(即通过顶层目录)。
我的问题:哪个项目布局最适合我的要求和围棋惯例和工具支持?我还没有看到更好的选择吗?
为什么不是'$ GOPATH/src/gospace/{server,client,lib,ios,android}'。典型的GOPATH结构是$ GOPATH/{src,bin,pkg}。通过这种方式,只需从GOPATH中的任意位置“建立gospace/server”或“gospace/client”即可。 – elithrar
这是一个很好的选择,因为它将所有组件都放在同一水平上。将ios和android放在Go工作区内的src目录下感觉有点奇怪。ios和android有自己的子目录结构和自己的src dirs等等,并且与Go无关。 – henning77
你可以在GOPATH下检出你的repo(路径将类似于GOPATH/src/project/{gospace,client-ios,client-android})。既然go不会碰到client- *目录,除非你让他这么做,他们会很高兴地一起住在那个目录中。作为奖励,您的项目将变得“可行”。 – mechmind