去构建多个/嵌套包?

sta*_*wer 8 go

我今天刚刚开始写Go(所以0经验),并想知道Go是否支持任何形式的"构建所有源文件",就像mvn install那样.

我的项目结构是

src
  `-github.com
          `-myproject
               |- package1
               |     `- main.go
               `- package2
                     |- lib1_used_by_main.go
                     `- lib2_used_by_main.go
Run Code Online (Sandbox Code Playgroud)

当我做

cd src/github.com/myproject
go build
Run Code Online (Sandbox Code Playgroud)

这失败了no buildable Go source files in src/github.com/myproject,这是正确的,因为所有源文件都在子包中.

是否有一个命令来构建所有子包,而不是明确地列出每个子包?

Ray*_*ear 15

你以后cd到基本目录,使用go build ./...注意,有3个阶段,因为它是一个省略号.这将以递归方式构建所有子目录.当然,您可以go build path/to/my/base/...随时随地执行此操作而无需访问cd目录.

这对于使用依赖于go/pkg目录的IDE的用户非常有用,例如SublimeText3和GoSublime.在构建程序包之前,对依赖项程序包进行更改不会更新自动填充程序,而程序包会将其放在go/pkg目录中.

我自己的项目被分解为多个包结构,因此我经常需要go build ./...更新自动完成.

  • 运行 go build ./... 后在哪里可以找到可执行文件? (3认同)
  • 默认情况下,不保留可执行文件。来自“go help build”:“当编译多个包或单个非主包时,build 会编译这些包,但会丢弃生成的对象,仅用于检查是否可以构建包。” 要获取二进制文件,请使用“-o”标志,将其指向将放置它们的目录。 (2认同)