mirror of
https://github.com/taigrr/wails.git
synced 2026-04-13 18:38:11 -07:00
cross compilation command + help
This commit is contained in:
committed by
Lea Anthony
parent
5b2e5b1d85
commit
5d719685d3
@@ -10,6 +10,18 @@ import (
|
||||
"github.com/wailsapp/wails/cmd"
|
||||
)
|
||||
|
||||
// getSupportedPlatforms returns a slice of platform/architecture
|
||||
// targets that are buildable using the cross-platform 'x' option.
|
||||
func getSupportedPlatforms() []string {
|
||||
return []string{
|
||||
"darwin/amd64",
|
||||
"linux/i386",
|
||||
"linux/amd64",
|
||||
"linux/arm-7",
|
||||
"windows/amd64",
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
||||
var packageApp = false
|
||||
@@ -29,14 +41,15 @@ func init() {
|
||||
BoolFlag("f", "Force rebuild of application components", &forceRebuild).
|
||||
BoolFlag("d", "Build in Debug mode", &debugMode).
|
||||
BoolFlag("verbose", "Verbose output", &verbose).
|
||||
StringFlag("t", "Generate Typescript definitions to given file (at runtime)", &typescriptFilename).
|
||||
StringFlag("x", `Cross-compile application to specified platform via xgo\n
|
||||
StringFlag("t", "Generate Typescript definitions to given file (at runtime)", &typescriptFilename)
|
||||
|
||||
Supported platforms:
|
||||
- darwin
|
||||
- windows
|
||||
- linux/arm
|
||||
`, &platform)
|
||||
var b strings.Builder
|
||||
for _, plat := range getSupportedPlatforms() {
|
||||
fmt.Fprintf(&b, " - %s\n", plat)
|
||||
}
|
||||
initCmd.StringFlag("x",
|
||||
fmt.Sprintf("Cross-compile application to specified platform via xgo\n%s", b.String()),
|
||||
&platform)
|
||||
|
||||
initCmd.Action(func() error {
|
||||
|
||||
@@ -62,6 +75,25 @@ Supported platforms:
|
||||
return fmt.Errorf("Unable to find 'project.json'. Please check you are in a Wails project directory")
|
||||
}
|
||||
|
||||
// Set cross-compile
|
||||
projectOptions.Platform = runtime.GOOS
|
||||
if len(platform) > 0 {
|
||||
supported := false
|
||||
for _, plat := range getSupportedPlatforms() {
|
||||
if plat == platform {
|
||||
supported = true
|
||||
}
|
||||
}
|
||||
if !supported {
|
||||
return fmt.Errorf("Unsupported platform '%s' specified.\nPlease run `wails build -h` to see the supported platform/architecture options.", platform)
|
||||
}
|
||||
|
||||
projectOptions.CrossCompile = true
|
||||
plat := strings.Split(platform, "/")
|
||||
projectOptions.Platform = plat[0]
|
||||
projectOptions.Architecture = plat[1]
|
||||
}
|
||||
|
||||
// Validate config
|
||||
// Check if we have a frontend
|
||||
err = cmd.ValidateFrontendConfig(projectOptions)
|
||||
@@ -140,21 +172,6 @@ Supported platforms:
|
||||
buildSpinner.Success()
|
||||
}
|
||||
|
||||
// Set cross-compile
|
||||
projectOptions.Platform = runtime.GOOS
|
||||
if len(platform) > 0 {
|
||||
projectOptions.CrossCompile = true
|
||||
projectOptions.Platform = platform
|
||||
projectOptions.Architecture = "amd64"
|
||||
|
||||
// check build architecture
|
||||
if strings.Contains(platform, "/") {
|
||||
p := strings.Split(platform, "/")
|
||||
projectOptions.Platform = p[0]
|
||||
projectOptions.Architecture = p[1]
|
||||
}
|
||||
}
|
||||
|
||||
err = cmd.BuildApplication(projectOptions.BinaryName, forceRebuild, buildMode, packageApp, projectOptions)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user