Search code examples
gobuildpackagenaming-conventions

How to build executable with name other than Golang package


Is it possible to build (install, go get, etc) an executable with the name foobar if my Golang package name is one of the following:

  • github.com/username/go-foobar
  • github.com/username/foobar-tools

and has main.go in the package root?


Solution

  • go build -o <your desired name>
    

    You can specify the executable name using the -o switch with go build. For your example it would look something like: cd $GOPATH/github.com/username/go-foobar && go build -o foobar. However, you're just left with the executable in the package's folder -- you still need to install it somehow.

    However, I don't know of any way to specify that for someone using go get github.com/username/go-foobar to install your tool. For instance, see this answer: https://stackoverflow.com/a/33243591/2415176

    If you're not worried about people installing your tool with go get, this is the kind of thing you can wrap in a Makefile.