Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Building all code with Go and './...'

According to Ethereum Developers' Guide:

You can build all code using the go tool, placing the resulting binary in $GOPATH/bin.

go install -v ./...

What does ./... do in the context of:

go install -v ./...
like image 243
Jason Shen Avatar asked Jul 01 '17 05:07

Jason Shen


1 Answers

That will install any "main" packages found in the current or subdirectories,

"subdirectories": that is what the ./... syntax means.
It forces go install to consider not just the current folder/package ('.'), but also the ones in the sub-folders: "..."

See "What is a sensible way to layout a Go project": you can have multiple packages "main", in a library driven development:

Moving the main.go file out of your root allows you to build your application from the perspective of a library. Your application binary is simply a client of your application’s library.

Sometimes you might want users to interact in multiple ways so you create multiple binaries.
For example, if you had an “adder” package that that let users add numbers together, you may want to release a command line version as well as a web version.
You can easily do this by organizing your project like this:

adder/
  adder.go
  cmd/
    adder/
      main.go
    adder-server/
      main.go

Users can install your “adder” application binaries with “go get” using an ellipsis:

$ go get github.com/benbjohnson/adder/...

And voila, your user has “adder” and “adder-server” installed!

Similarly, a go install -v ./... would install “adder” and “adder-server” as well.

Note: the -v print the names of packages as they are compiled.

like image 99
VonC Avatar answered Sep 28 '22 15:09

VonC