| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- @echo off
- setlocal enabledelayedexpansion
- REM ============================================================
- REM Cross-compile script: Windows / Linux, x86 / ARM
- REM Binaries are output to dist\ (static, CGO_ENABLED=0)
- REM ============================================================
- set APPNAME=data_send_service
- set OUTDIR=dist
- REM Each target is "os-arch-GOARM"; use "none" when GOARM is unused.
- REM x86 32-bit=386, x86 64-bit=amd64, ARM 32-bit=arm(GOARM=7), ARM 64-bit=arm64
- set TARGETS=windows-amd64-none windows-386-none windows-arm64-none linux-amd64-none linux-386-none linux-arm64-none linux-arm-7
- if not exist %OUTDIR% mkdir %OUTDIR%
- set CGO_ENABLED=0
- echo ========================================
- echo Start cross-compiling %APPNAME%
- echo Output directory: %OUTDIR%
- echo ========================================
- for %%T in (%TARGETS%) do (
- for /f "tokens=1,2,3 delims=-" %%a in ("%%T") do (
- set "GOOS=%%a"
- set "GOARCH=%%b"
- set "EXTRA=%%c"
- set "GOARM="
- if not "!EXTRA!"=="none" set "GOARM=!EXTRA!"
- if "!GOARCH!"=="arm" (
- set "ARCHNAME=armv!GOARM!"
- ) else (
- set "ARCHNAME=!GOARCH!"
- )
- set "EXESUF="
- if "!GOOS!"=="windows" set "EXESUF=.exe"
- set "OUTFILE=%OUTDIR%\%APPNAME%_!GOOS!_!ARCHNAME!!EXESUF!"
- echo.
- echo [build] !GOOS! / !ARCHNAME! -^> !OUTFILE!
- go build -trimpath -ldflags "-s -w" -o "!OUTFILE!" .
- if errorlevel 1 (
- echo [error] build failed: !GOOS! / !ARCHNAME!
- goto :fail
- )
- )
- )
- echo.
- echo ========================================
- echo All builds succeeded. Artifacts:
- echo ========================================
- dir /b %OUTDIR%
- goto :eof
- :fail
- echo.
- echo Build aborted due to errors.
- exit /b 1
|