87 lines
1.3 KiB
Bash
87 lines
1.3 KiB
Bash
#!/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
|