Go 是否要构建多个/嵌套包?

Go 是否要构建多个/嵌套包?,go,Go,我今天刚开始写Go(因此0体验),不知道Go是否支持任何形式的“构建所有源文件”,就像mvn install所做的那样 我的项目结构是 src `-github.com `-myproject |- package1 | `- main.go `- package2 |- lib1_used_by_main.go

我今天刚开始写Go(因此0体验),不知道Go是否支持任何形式的“构建所有源文件”,就像
mvn install
所做的那样

我的项目结构是

src
  `-github.com
          `-myproject
               |- package1
               |     `- main.go
               `- package2
                     |- lib1_used_by_main.go
                     `- lib2_used_by_main.go
当我这样做的时候

cd src/github.com/myproject
go build
如果src/github.com/myproject中没有可构建的Go源文件,则此操作会失败,因为所有源文件都在子包中,这是一种正确的做法


是否有生成所有子包的命令,而不显式列出每个子包?

cd
到基本目录后,使用
go build./…
注意,有三个句点,因为它是省略号。这将递归地构建所有子目录。当然,您可以随时从任何位置执行
go build path/to/my/base/…
,而无需
cd
到目录

这对于那些使用依赖于
go/pkg
目录的IDE的人来说非常有用,例如SublimiteText3 with。在构建包之前,对依赖项包进行更改不会更新自动完成,该包会将其放置在
go/pkg
目录中


我自己的项目被分解成多个包结构,因此我经常必须
进行构建。/…
更新我的自动完成。

任何需要的包都是根据需要构建的,您不需要做任何事情。您只需要生成main,因为在非main包上生成
go-build
不会产生任何工件。我经常需要这样做,以便我的自动完成在SublimiteText中工作。@JimB这是不正确的。构建非主包将构建源代码并将其放置在
go/pkg
中。任何依赖于
go/pkg
文件夹的东西(例如IDE)都将受益于正确更新。雷芬斯皮尔:不,这是正确的。从:
编译多个包或单个非主包时,build会编译包,但会丢弃生成的对象,仅用于检查包是否可以生成。
如果要保存生成工件,可以使用
go install
go build-i
@JimB。。。也许GoPublime的
margo
会截取结果以更新自动完成?无论哪种方式,在添加新函数(etc)后简单地构建包都会更新我的自动完成功能。我尝试了这种方法,但它似乎无法与
供应商
一起很好地工作,因为它也尝试在包中构建内容,但由于找不到依赖项而失败。你知道如何解决这个问题吗?这会给你“找不到导入…”?如果是这样的话,你需要
去获取它列出的每个单独的导入。我对供应商问题的解决方案就是把我的电源放在每个入口点的不同目录中。/cmd。然后您可以
开始构建。/cmd/…