Go Commands - build: Difference between revisions
No edit summary |
|||
Line 12: | Line 12: | ||
<font color=red> | <font color=red> | ||
When compiling multiple packages or a single non-main package, build compiles the packages but discards the resulting object, serving only as a check that the packages can be built. | |||
'go tool compile' | |||
'go tool link' | |||
<tt>go build</tt> builds the ''current package''. | |||
A specific package can be also built: <tt>go build <package-path-string-literal></tt> where the <tt><package-path-string-literal></tt> is the same literal used by the <tt>[[Go Keyword import|import]]</tt> statement. | |||
Wildcards can be specified in the package specifiers. A three period indicates a pattern matching any string: <tt>go build something/...</tt> | |||
</font> | </font> | ||
Line 27: | Line 39: | ||
If that package is "main", build writes the resulting executable to an output file named after the first source file ('go build a.go b.go' writes an "a" executable) or the source code directory ('go build a/b' writes 'b'). The output is overridden by <tt>[[Go_Commands_-_build#-o|-o]]</tt> flag. | If that package is "main", build writes the resulting executable to an output file named after the first source file ('go build a.go b.go' writes an "a" executable) or the source code directory ('go build a/b' writes 'b'). The output is overridden by <tt>[[Go_Commands_-_build#-o|-o]]</tt> flag. | ||
Also see: | |||
<blockquote style="background-color: #f9f9f9; border: solid thin lightgrey;"> | <blockquote style="background-color: #f9f9f9; border: solid thin lightgrey;"> | ||
:[[Go | :[[Go Concepts - Runtime#Compiling_an_Executable|Building an Executable]] | ||
</blockquote> | </blockquote> | ||
=Building a Library= | |||
< | If the arguments are a list of [[Go_Keyword_import#import_path|import paths]], <tt>build</tt> compiles the packages named by the import paths, along with their dependencies, but it does not install the results. | ||
=<tt>-o</tt>= | |||
<tt>-o</tt> flag can only be used when compiling a single package or building an executable. It forces <tt>build</tt> to write the executable or object file to the given file name, instead of the default behavior. | |||
build | |||
=<tt>-i</tt>= | |||
The -i flag installs the packages that are dependencies of the target. | The <tt>-i</tt> flag installs the packages that are dependencies of the target. | ||
=Shared Tool Flags= | |||
= | |||
<blockquote style="background-color: #f9f9f9; border: solid thin lightgrey;"> | <blockquote style="background-color: #f9f9f9; border: solid thin lightgrey;"> | ||
:[[Go | :[[Go Shared Tool Flags|Shared Flags]] | ||
</blockquote> | </blockquote> | ||
Revision as of 17:48, 4 April 2016
Internal
Overview
Depending on the arguments, go build compiles packages or individual files, treating them as part of a single package.
The artifacts are written into the current directory, unless the -o option is used.
TODO
When compiling multiple packages or a single non-main package, build compiles the packages but discards the resulting object, serving only as a check that the packages can be built.
'go tool compile'
'go tool link'
go build builds the current package.
A specific package can be also built: go build <package-path-string-literal> where the <package-path-string-literal> is the same literal used by the import statement.
Wildcards can be specified in the package specifiers. A three period indicates a pattern matching any string: go build something/...
Syntax
go build [-o output] [-i] [build flags] [packages]
Building an Executable
If the arguments are a list of .go files, build treats them as a list of source files specifying a single package.
If that package is "main", build writes the resulting executable to an output file named after the first source file ('go build a.go b.go' writes an "a" executable) or the source code directory ('go build a/b' writes 'b'). The output is overridden by -o flag.
Also see:
Building a Library
If the arguments are a list of import paths, build compiles the packages named by the import paths, along with their dependencies, but it does not install the results.
-o
-o flag can only be used when compiling a single package or building an executable. It forces build to write the executable or object file to the given file name, instead of the default behavior.
-i
The -i flag installs the packages that are dependencies of the target.