使用 make 交叉编译跨平台应用

发布时间:2022-05-17浏览次数:0

支持注册ChatGPT Plus的OneKey虚拟卡
绑定Apple Pay、Google Pay、支付宝和微信支付进行日常消费

注册和了解更多 ->

silver

make 文件内容

BUILD_ENV := CGO_ENABLED=0
BUILD=`date +%FT%T%z`
LDFLAGS=-ldflags "-w -s -X main.Version=${VERSION} -X main.Build=${BUILD}"
TARGET_EXEC=test
.PHONY: all clean setup build-linux build-osx build-windows

all: clean setup build-linux build-osx build-windows

clean:
	rm -rf build

setup:
	mkdir -p build/linux
	mkdir -p build/osx
	mkdir -p build/windows

build-linux: setup
	${BUILD_ENV} GOARCH=amd64 GOOS=linux go build ${LDFLAGS} -o build/linux/${TARGET_EXEC}

build-osx: setup
	${BUILD_ENV} GOARCH=amd64 GOOS=darwin go build ${LDFLAGS} -o build/osx/${TARGET_EXEC}

build-windows: setup
	${BUILD_ENV} GOARCH=amd64 GOOS=windows go build ${LDFLAGS} -o build/windows/${TARGET_EXEC}.exe

.PHONY

其作用是声明 build / clean / tool / lint / help 为伪目标
声明为伪目标会怎么样呢?

  • 声明为伪目标后:在执行对应的命令时,make 就不会去检查是否存在 build / clean / tool / lint / help 其对应的文件,而是每次都会运行标签对应的命令
  • 若不声明:恰好存在对应的文件,则 make 将会认为 xx 文件已存在,没有重新构建的必要了

LDFLAGS中参数

-w: 选项用于抹除DWARF符号表,

-s: 选项用于抹除符号表和调试信息。更多细节详见参考一

-X: 环境变量

字节笔记本扫描二维码查看更多内容