我曾尝试编译我的小 Javafx 程序,该程序仅在 Windows 10 平台上使用 gradle client-gradle-plugin 版本 0.1.27 更改 Windows 壁纸。
- gradle build : 生成 JAR 的标准编译,成功。
- gradle nativeBuild,编译成功。毕业典礼
- nativeBuild,链接步骤失败并出现错误:LNK2001
你有什么想法,这是一个已知的问题吗?
C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\wavepaper.lib and object C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\wavepaper.exp
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] wavepaper.main.obj : **error LNK2001: unresolved external symbol StrictMath_acos**
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] wavepaper.main.obj : error LNK2001: unresolved external symbol StrictMath_asin
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] wavepaper.main.obj : error LNK2001: unresolved external symbol StrictMath_atan2
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] wavepaper.main.obj : error LNK2001: unresolved external symbol StrictMath_cbrt
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] wavepaper.main.obj : error LNK2001: unresolved external symbol StrictMath_hypot
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\wavepaper.exe : **fatal error LNK1120: 5 unresolved externals**
客户端调试0.log
[mer. juin 10 12:07:53 CEST 2020][INFO] ==================== COMPILE TASK ====================
[mer. juin 10 12:07:54 CEST 2020][FINE] PB Command for check version: C:\Program Files\AdoptOpenJDK\graalvm-ce-java11-20.2.0-dev\bin\java -version
[mer. juin 10 12:07:54 CEST 2020][FINE] Start process check version...
[mer. juin 10 12:07:55 CEST 2020][FINE] [SUB] openjdk version "11.0.7" 2020-04-14
[mer. juin 10 12:07:55 CEST 2020][FINE] [SUB] OpenJDK Runtime Environment GraalVM CE 20.2.0-dev (build 11.0.7+10-jvmci-20.1-b02)
[mer. juin 10 12:07:55 CEST 2020][FINE] [SUB] OpenJDK 64-Bit Server VM GraalVM CE 20.2.0-dev (build 11.0.7+10-jvmci-20.1-b02, mixed mode, sharing)
[mer. juin 10 12:07:55 CEST 2020][FINE] Result for check version: 0
[mer. juin 10 12:07:55 CEST 2020][INFO] We will now compile your code for x86_64-microsoft-windows. This may take some time.
[mer. juin 10 12:07:55 CEST 2020][FINE] Extracting native libs to: C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\gvm\lib
[mer. juin 10 12:07:55 CEST 2020][FINE] Looking for resource: /native/windows/launcher.c
[mer. juin 10 12:07:55 CEST 2020][FINE] PB Command for compile-additional-sources: cl -c -DSUBSTRATE /MD /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS -IC:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\gvm\wavepaper launcher.c
[mer. juin 10 12:07:55 CEST 2020][FINE] Start process compile-additional-sources...
[mer. juin 10 12:07:55 CEST 2020][FINE] [SUB] Microsoft (R) C/C++ Optimizing Compiler Version 19.26.28806 for x64
[mer. juin 10 12:07:55 CEST 2020][FINE] [SUB] Copyright (C) Microsoft Corporation. All rights reserved.
[mer. juin 10 12:07:55 CEST 2020][FINE] [SUB]
[mer. juin 10 12:07:55 CEST 2020][FINE] [SUB] launcher.c
[mer. juin 10 12:07:56 CEST 2020][FINE] Result for compile-additional-sources: 0
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning for init build time files
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna\5.4.0\3e25bc70dd7750a3f0fea5bd1467708280bea04e\jna-5.4.0.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-fxml.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-controls.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gradle\caches\modules-2\files-2.1\org.openjfx\javafx-swing\11\6d34fc92fbea9ab95966380c29b06672a94f4a3e\javafx-swing-11-win.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-graphics.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-base.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning for reflection files
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna\5.4.0\3e25bc70dd7750a3f0fea5bd1467708280bea04e\jna-5.4.0.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-fxml.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Adding classes from C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-fxml.jar::META-INF/substrate/config/reflectionconfig.json
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-controls.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Adding classes from C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-controls.jar::META-INF/substrate/config/reflectionconfig.json
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gradle\caches\modules-2\files-2.1\org.openjfx\javafx-swing\11\6d34fc92fbea9ab95966380c29b06672a94f4a3e\javafx-swing-11-win.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-graphics.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Adding classes from C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-graphics.jar::META-INF/substrate/config/reflectionconfig-x86_64-windows.json
[mer. juin 10 12:07:56 CEST 2020][FINE] Adding classes from C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-graphics.jar::META-INF/substrate/config/reflectionconfig.json
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-base.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Adding classes from C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-base.jar::META-INF/substrate/config/reflectionconfig.json
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning for JNI files
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna\5.4.0\3e25bc70dd7750a3f0fea5bd1467708280bea04e\jna-5.4.0.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-fxml.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-controls.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gradle\caches\modules-2\files-2.1\org.openjfx\javafx-swing\11\6d34fc92fbea9ab95966380c29b06672a94f4a3e\javafx-swing-11-win.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-graphics.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Adding classes from C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-graphics.jar::META-INF/substrate/config/jniconfig-x86_64-windows.json
[mer. juin 10 12:07:56 CEST 2020][FINE] Adding classes from C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-graphics.jar::META-INF/substrate/config/jniconfig.json
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-base.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning for resource files
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna\5.4.0\3e25bc70dd7750a3f0fea5bd1467708280bea04e\jna-5.4.0.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-fxml.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-controls.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gradle\caches\modules-2\files-2.1\org.openjfx\javafx-swing\11\6d34fc92fbea9ab95966380c29b06672a94f4a3e\javafx-swing-11-win.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-graphics.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] Scanning C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-base.jar
[mer. juin 10 12:07:56 CEST 2020][FINE] PB Command for compile: C:\Program Files\AdoptOpenJDK\graalvm-ce-java11-20.2.0-dev\bin\native-image.cmd --report-unsupported-elements-at-runtime "-Djdk.internal.lambda.eagerlyInitialize=false" --no-server -H:+ExitAfterRelocatableImageWrite -H:+SharedLibrary -H:+AddAllCharsets -H:+ReportExceptionStackTraces -H:-DeadlockWatchdogExitOnTimeout "-H:DeadlockWatchdogInterval=0" -H:+RemoveSaturatedTypeFlows "--features=org.graalvm.home.HomeFinderFeature" "-H:TempDirectory=C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\gvm\tmp" "-H:EnableURLProtocols=http,https" "-H:ReflectionConfigurationFiles=C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\gvm\reflectionconfig-x86_64-windows.json" "-H:JNIConfigurationFiles=C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\gvm\jniconfig-x86_64-windows.json" "-H:ResourceConfigurationFiles=C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\gvm\resourceconfig-x86_64-windows.json" "-H:IncludeResourceBundles=com/sun/javafx/scene/control/skin/resources/controls,com/sun/javafx/scene/control/skin/resources/controls-nt,com.sun.javafx.tk.quantum.QuantumMessagesBundle" "-Dsvm.platform=org.graalvm.nativeimage.Platform$WINDOWS_AMD64" -cp "C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\classes\java\main;C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\resources\main;C:\Users\User\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna\5.4.0\3e25bc70dd7750a3f0fea5bd1467708280bea04e\jna-5.4.0.jar;C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-fxml.jar;C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-controls.jar;C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-controls.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.openjfx\javafx-swing\11\6d34fc92fbea9ab95966380c29b06672a94f4a3e\javafx-swing-11-win.jar;C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-graphics.jar;C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-graphics.jar;C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-base.jar;C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib\javafx-base.jar" wavepaper.Main
[mer. juin 10 12:07:56 CEST 2020][FINE] Start process compile...
[mer. juin 10 12:07:56 CEST 2020][INFO] [SUB] Warning: Ignoring server-mode native-image argument --no-server.
[mer. juin 10 12:08:01 CEST 2020][INFO] [SUB] [wavepaper.main:12684] classlist: 3,822.32 ms, 0.96 GB
[mer. juin 10 12:08:05 CEST 2020][INFO] [SUB] [wavepaper.main:12684] (cap): 3,212.12 ms, 0.96 GB
[mer. juin 10 12:08:06 CEST 2020][INFO] [SUB] [wavepaper.main:12684] setup: 5,613.86 ms, 0.96 GB
[mer. juin 10 12:08:36 CEST 2020][INFO] [SUB] WARNING GR-10238: VarHandle for static field is currently not fully supported. Static field private static volatile java.lang.System$Logger jdk.internal.event.EventHelper.securityLogger is not properly marked for Unsafe access!
[mer. juin 10 12:08:56 CEST 2020][INFO] [SUB] [wavepaper.main:12684] (clinit): 1,106.21 ms, 3.42 GB
[mer. juin 10 12:08:56 CEST 2020][INFO] [SUB] [wavepaper.main:12684] (typeflow): 18,408.30 ms, 3.42 GB
[mer. juin 10 12:08:56 CEST 2020][INFO] [SUB] [wavepaper.main:12684] (objects): 24,649.78 ms, 3.42 GB
[mer. juin 10 12:08:56 CEST 2020][INFO] [SUB] [wavepaper.main:12684] (features): 3,960.69 ms, 3.42 GB
[mer. juin 10 12:08:56 CEST 2020][INFO] [SUB] [wavepaper.main:12684] analysis: 49,264.44 ms, 3.42 GB
[mer. juin 10 12:08:58 CEST 2020][INFO] [SUB] [wavepaper.main:12684] universe: 1,979.74 ms, 3.42 GB
[mer. juin 10 12:09:07 CEST 2020][INFO] [SUB] [wavepaper.main:12684] (parse): 9,154.31 ms, 3.87 GB
[mer. juin 10 12:09:15 CEST 2020][INFO] [SUB] [wavepaper.main:12684] (inline): 7,502.96 ms, 4.79 GB
[mer. juin 10 12:09:45 CEST 2020][INFO] [SUB] [wavepaper.main:12684] (compile): 29,427.17 ms, 4.79 GB
[mer. juin 10 12:09:48 CEST 2020][INFO] [SUB] [wavepaper.main:12684] compile: 49,758.91 ms, 4.79 GB
[mer. juin 10 12:09:56 CEST 2020][INFO] [SUB] [wavepaper.main:12684] image: 7,794.75 ms, 4.80 GB
[mer. juin 10 12:09:56 CEST 2020][INFO] [SUB] [wavepaper.main:12684] write: 289.18 ms, 4.80 GB
[mer. juin 10 12:09:56 CEST 2020][INFO] [SUB] [wavepaper.main:12684] [total]: 119,402.13 ms, 4.80 GB
[mer. juin 10 12:09:57 CEST 2020][FINE] Result for compile: 0
[mer. juin 10 12:09:57 CEST 2020][FINE] Logging process [compile] to file: C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\target\client\log\process-compile-1591783797872.log
客户端调试0.log3
[mer. juin 10 12:19:02 CEST 2020][INFO] ==================== LINK TASK ====================
[mer. juin 10 12:19:02 CEST 2020][FINE] Looking for resource: /native/windows/launcher.c
[mer. juin 10 12:19:02 CEST 2020][FINE] PB Command for compile-additional-sources: cl -c -DSUBSTRATE /MD /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS -IC:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\gvm\wavepaper launcher.c
[mer. juin 10 12:19:02 CEST 2020][FINE] Start process compile-additional-sources...
[mer. juin 10 12:19:02 CEST 2020][FINE] [SUB] Microsoft (R) C/C++ Optimizing Compiler Version 19.26.28806 for x64
[mer. juin 10 12:19:02 CEST 2020][FINE] [SUB] Copyright (C) Microsoft Corporation. All rights reserved.
[mer. juin 10 12:19:02 CEST 2020][FINE] [SUB]
[mer. juin 10 12:19:02 CEST 2020][FINE] [SUB] launcher.c
[mer. juin 10 12:19:02 CEST 2020][FINE] Result for compile-additional-sources: 0
[mer. juin 10 12:19:02 CEST 2020][FINE] PB Command for link: link C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\gvm\wavepaper\launcher.obj C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\gvm\tmp\SVM-1591784216803\wavepaper.main.obj advapi32.lib iphlpapi.lib secur32.lib userenv.lib ws2_32.lib j2pkcs11.lib java.lib net.lib nio.lib prefs.lib fdlibm.lib sunec.lib zip.lib ffi.lib jvm.lib libchelper.lib /NODEFAULTLIB:libcmt.lib /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup comdlg32.lib dwmapi.lib gdi32.lib imm32.lib shell32.lib uiautomationcore.lib urlmon.lib winmm.lib glass.lib javafx_font.lib javafx_iio.lib prism_common.lib prism_d3d.lib /WHOLEARCHIVE:glass.lib /WHOLEARCHIVE:javafx_font.lib /WHOLEARCHIVE:javafx_iio.lib /WHOLEARCHIVE:prism_common.lib /WHOLEARCHIVE:prism_d3d.lib /OUT:C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\wavepaper.exe /LIBPATH:C:\Program Files\AdoptOpenJDK\graalvm-ce-java11-20.2.0-dev\lib\svm\clibraries\windows-amd64 /LIBPATH:C:\Program Files\AdoptOpenJDK\graalvm-ce-java11-20.2.0-dev\lib /LIBPATH:C:\Users\User\.gluon\substrate\javafxStaticSdk\15-ea+gvm20\windows-x86_64\sdk\lib
[mer. juin 10 12:19:02 CEST 2020][FINE] Start process link...
[mer. juin 10 12:19:02 CEST 2020][INFO] [SUB] Microsoft (R) Incremental Linker Version 14.26.28806.0
[mer. juin 10 12:19:02 CEST 2020][INFO] [SUB] Copyright (C) Microsoft Corporation. All rights reserved.
[mer. juin 10 12:19:02 CEST 2020][INFO] [SUB]
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] Creating library C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\wavepaper.lib and object C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\wavepaper.exp
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] wavepaper.main.obj : error LNK2001: unresolved external symbol StrictMath_acos
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] wavepaper.main.obj : error LNK2001: unresolved external symbol StrictMath_asin
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] wavepaper.main.obj : error LNK2001: unresolved external symbol StrictMath_atan2
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] wavepaper.main.obj : error LNK2001: unresolved external symbol StrictMath_cbrt
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] wavepaper.main.obj : error LNK2001: unresolved external symbol StrictMath_hypot
[mer. juin 10 12:19:03 CEST 2020][INFO] [SUB] C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\wavepaper.exe : fatal error LNK1120: 5 unresolved externals
[mer. juin 10 12:19:03 CEST 2020][FINE] Result for link: 1120
[mer. juin 10 12:19:03 CEST 2020][SEVERE] Process link failed with result: 1120
Check the log files under C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\gvm\log
And please check https://docs.gluonhq.com/client/ for more information.
[mer. juin 10 12:19:03 CEST 2020][INFO] Logging process [link] to file: C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\target\client\log\process-link-1591784343193.log
[mer. juin 10 12:19:03 CEST 2020][SEVERE] Linking failed.
Check the log files under C:\Users\User\workspace\Workspace\intellij-workspace\wavepaper\build\client\x86_64-windows\gvm\log
And please check https://docs.gluonhq.com/client/ for more information.