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