mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-03 00:41:59 +08:00
2.8 KiB
2.8 KiB
Build
The build command processes the Wails project and generates an application binary.
Usage
wails build <flags>
Flags
Flag | Details | Default |
---|---|---|
-clean | Clean the bin directory before building | |
-compiler path/to/compiler | Use a different go compiler, eg go1.15beta1 | go |
-ldflags "custom ld flags" | Use given ldflags | |
-o path/to/binary | Compile to given path/filename | |
-k | Keep generated assets | |
-tags | Build tags to pass to Go compiler (quoted and space separated) | |
-upx | Compress final binary with UPX (if installed) | |
-upxflags "custom flags" | Flags to pass to upx | |
-v int | Verbosity level (0 - silent, 1 - default, 2 - verbose) | 1 |
-delve | If true, runs delve on the compiled binary | false |
The Build Process
The build process is as follows:
- The flags are processed, and an Options struct built containing the build context.
- The type of target is determined, and a custom build process is followed for target.
Desktop Target
- The frontend dependencies are installed. The command is read from the project file
wails.json
under the keyfrontend:install
and executed in thefrontend
directory. If this is not defined, it is ignored. - The frontend is then built. This command is read from the project file
wails.json
under the keyfrontend:install
and executed in thefrontend
directory. If this is not defined, it is ignored. - The project directory is checked to see if the
build
directory exists. If not, it is created and default project assets are copied to it. - An asset bundle is then created by reading the
html
key fromwails.json
and loading the referenced file. This is then parsed, looking for local Javascript and CSS references. Those files are in turn loaded into memory, converted to C data and saved into the asset bundle located atbuild/assets.h
, which also includes the original HTML. - The application icon is then processed: if there is no
build/appicon.png
, a default icon is copied. On Windows, anapp.ico
file is generated from this png. On Mac,icons.icns
is generated. - The platform assets in the
build/<platform>
directory are processed: manifest + icons compiled to a.syso
file ( deleted after compilation),info.plist
copied to.app
on Mac. - If we are building a universal binary for Mac, the application is compiled for both
arm64
andamd64
. Thelipo
tool is then executed to create the universal binary. - If we are not building a universal binary for Mac, the application is built using
go build
, using build tags to indicate type of application and build mode (debug/production). - If the
-upx
flag was provided,upx
is invoked to compress the binary. Custom flags may be provided using the-upxflags
flag.