build.bat 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM ============================================================
  4. REM Cross-compile script: Windows / Linux, x86 / ARM
  5. REM Binaries are output to dist\ (static, CGO_ENABLED=0)
  6. REM ============================================================
  7. set APPNAME=data_send_service
  8. set OUTDIR=dist
  9. REM Each target is "os-arch-GOARM"; use "none" when GOARM is unused.
  10. REM x86 32-bit=386, x86 64-bit=amd64, ARM 32-bit=arm(GOARM=7), ARM 64-bit=arm64
  11. set TARGETS=windows-amd64-none windows-386-none windows-arm64-none linux-amd64-none linux-386-none linux-arm64-none linux-arm-7
  12. if not exist %OUTDIR% mkdir %OUTDIR%
  13. set CGO_ENABLED=0
  14. echo ========================================
  15. echo Start cross-compiling %APPNAME%
  16. echo Output directory: %OUTDIR%
  17. echo ========================================
  18. for %%T in (%TARGETS%) do (
  19. for /f "tokens=1,2,3 delims=-" %%a in ("%%T") do (
  20. set "GOOS=%%a"
  21. set "GOARCH=%%b"
  22. set "EXTRA=%%c"
  23. set "GOARM="
  24. if not "!EXTRA!"=="none" set "GOARM=!EXTRA!"
  25. if "!GOARCH!"=="arm" (
  26. set "ARCHNAME=armv!GOARM!"
  27. ) else (
  28. set "ARCHNAME=!GOARCH!"
  29. )
  30. set "EXESUF="
  31. if "!GOOS!"=="windows" set "EXESUF=.exe"
  32. set "OUTFILE=%OUTDIR%\%APPNAME%_!GOOS!_!ARCHNAME!!EXESUF!"
  33. echo.
  34. echo [build] !GOOS! / !ARCHNAME! -^> !OUTFILE!
  35. go build -trimpath -ldflags "-s -w" -o "!OUTFILE!" .
  36. if errorlevel 1 (
  37. echo [error] build failed: !GOOS! / !ARCHNAME!
  38. goto :fail
  39. )
  40. )
  41. )
  42. echo.
  43. echo ========================================
  44. echo All builds succeeded. Artifacts:
  45. echo ========================================
  46. dir /b %OUTDIR%
  47. goto :eof
  48. :fail
  49. echo.
  50. echo Build aborted due to errors.
  51. exit /b 1