87 lines
1.3 KiB
Plaintext
87 lines
1.3 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
# 设置默认值
|
||
|
OS=${1:-linux}
|
||
|
ARCH=${2:-amd64}
|
||
|
EXT=""
|
||
|
LDFLAGS=""
|
||
|
|
||
|
# 根据目标操作系统和架构设置编译参数
|
||
|
case "$OS" in
|
||
|
windows)
|
||
|
GOOS=windows
|
||
|
;;
|
||
|
mac)
|
||
|
GOOS=darwin
|
||
|
;;
|
||
|
darwin)
|
||
|
GOOS=darwin
|
||
|
;;
|
||
|
linux)
|
||
|
GOOS=linux
|
||
|
;;
|
||
|
*)
|
||
|
echo "Unsupported OS: $OS"
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
case "$ARCH" in
|
||
|
x64)
|
||
|
GOARCH=amd64
|
||
|
;;
|
||
|
amd64)
|
||
|
GOARCH=amd64
|
||
|
;;
|
||
|
x86)
|
||
|
GOARCH=386
|
||
|
;;
|
||
|
386)
|
||
|
GOARCH=386
|
||
|
;;
|
||
|
arm64)
|
||
|
GOARCH=arm64
|
||
|
;;
|
||
|
arm)
|
||
|
GOARCH=arm
|
||
|
;;
|
||
|
*)
|
||
|
echo "Unsupported ARCH: $ARCH"
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
# 启用 CGO
|
||
|
export CGO_ENABLED=1
|
||
|
|
||
|
# 设置交叉编译工具链(如果需要)
|
||
|
if [ "$GOOS" = "windows" ]; then
|
||
|
EXT=.exe
|
||
|
CC=x86_64-w64-mingw32-gcc
|
||
|
CXX=x86_64-w64-mingw32-g++
|
||
|
LDFLAGS="-H windowsgui"
|
||
|
PWD=`pwd`
|
||
|
CGO_CPPFLAGS="-I${PWD}/include"
|
||
|
elif [ "$GOOS" = "darwin" ]; then
|
||
|
CC=o64-clang
|
||
|
CXX=o64-clang++
|
||
|
else
|
||
|
CC=gcc
|
||
|
CXX=g++
|
||
|
fi
|
||
|
|
||
|
export CC
|
||
|
|
||
|
# 编译
|
||
|
echo "Building for $GOOS/$GOARCH..."
|
||
|
|
||
|
# mkdir -p build
|
||
|
GOOS="${GOOS}" GOARCH="${GOARCH}" CC="${CC}" CXX="${CXX}" CGO_CPPFLAGS="${CGO_CPPFLAGS}" go build -o "dist/${GOOS}_${GOARCH}${EXT}" -ldflags="${LDFLAGS}" .
|
||
|
|
||
|
if [ $? -eq 0 ]; then
|
||
|
echo "Build successful: dist/${GOOS}_${GOARCH}${EXT}"
|
||
|
else
|
||
|
echo "Build failed"
|
||
|
exit 1
|
||
|
fi
|