Wails不同平台打包

用wails进行go的app打包,简单列一个模版,测试需要再拿来用。

Makefile

# 应用程序名称和版本信息
APP_NAME := app-client
VERSION := 1.0.0
GIT_HASH := $(shell git rev-parse --short HEAD)
BUILD_TIME := $(shell date +%Y-%m-%dT%H:%M:%S)
IDENTIFIER := www.mine.app
PKG_OUTPUT := build/$(APP_NAME)-$(VERSION)# 编译标记
LDFLAGS := -ldflags="-X 'main.AppName=$(APP_NAME)' -X 'main.Version=$(VERSION)' -X 'main.GitHash=$(GIT_HASH)' -X 'main.BuildTime=$(BUILD_TIME)'"# Wails 命令
WAILS := wails# 默认目标
.PHONY: all
all: clean build package# 清理旧的构建文件
.PHONY: clean
clean:@echo "Cleaning build directory..."rm -rf build# 生成静态文件(如需要)
.PHONY: static-generated
static-generated:statik -src=./configs# 运行开发模式
.PHONY: dev
dev:$(WAILS) dev -s# 各个平台和架构的构建目标
.PHONY: build
build: mac_amd64 mac_arm64 mac_universal windows_amd64 windows_arm64 linux_amd64 linux_arm64# 构建 macOS 版本
.PHONY: mac_amd64
mac_amd64:@echo "Building macOS AMD64 version with Git Hash: $(GIT_HASH)"GOOS=darwin GOARCH=amd64 $(WAILS) build -platform darwin/amd64 $(LDFLAGS) -o build/$(APP_NAME)-macOS-AMD64.PHONY: mac_arm64
mac_arm64:@echo "Building macOS ARM64 version with Git Hash: $(GIT_HASH)"GOOS=darwin GOARCH=arm64 $(WAILS) build -platform darwin/arm64 $(LDFLAGS) -o build/$(APP_NAME)-macOS-ARM64.PHONY: mac_universal
mac_universal:@echo "Building macOS Universal version (AMD64 + ARM64) with Git Hash: $(GIT_HASH)"GOOS=darwin GOARCH=arm64 $(WAILS) build -platform darwin/universal $(LDFLAGS) -o build/$(APP_NAME)-macOS-Universal# 构建 Windows 版本
.PHONY: windows_amd64
windows_amd64:@echo "Building Windows AMD64 version with Git Hash: $(GIT_HASH)"GOOS=windows GOARCH=amd64 $(WAILS) build -platform windows/amd64 $(LDFLAGS) -o build/$(APP_NAME)-Windows-AMD64.exe.PHONY: windows_arm64
windows_arm64:@echo "Building Windows ARM64 version with Git Hash: $(GIT_HASH)"GOOS=windows GOARCH=arm64 $(WAILS) build -platform windows/arm64 $(LDFLAGS) -o build/$(APP_NAME)-Windows-ARM64.exe# 构建 Linux 版本
.PHONY: linux_amd64
linux_amd64:@echo "Building Linux AMD64 version with Git Hash: $(GIT_HASH)"GOOS=linux GOARCH=amd64 $(WAILS) build -platform linux/amd64 $(LDFLAGS) -o build/$(APP_NAME)-Linux-AMD64.PHONY: linux_arm64
linux_arm64:@echo "Building Linux ARM64 version with Git Hash: $(GIT_HASH)"GOOS=linux GOARCH=arm64 $(WAILS) build -platform linux/arm64 $(LDFLAGS) -o build/$(APP_NAME)-Linux-ARM64# 打包目标:打包所有平台和架构的应用
.PHONY: package
package: package_mac package_windows package_linux# macOS 打包
.PHONY: package_mac
package_mac: mac_amd64 mac_arm64 mac_universal@echo "Packaging macOS versions..."hdiutil create -volname "$(APP_NAME) AMD64" -srcfolder build/$(APP_NAME)-macOS-AMD64 -ov -format UDZO $(PKG_OUTPUT)-macOS-AMD64.dmghdiutil create -volname "$(APP_NAME) ARM64" -srcfolder build/$(APP_NAME)-macOS-ARM64 -ov -format UDZO $(PKG_OUTPUT)-macOS-ARM64.dmghdiutil create -volname "$(APP_NAME) Universal" -srcfolder build/$(APP_NAME)-macOS-Universal -ov -format UDZO $(PKG_OUTPUT)-macOS-Universal.dmg# Windows 打包
.PHONY: package_windows
package_windows: windows_amd64 windows_arm64@echo "Packaging Windows versions..."zip -j $(PKG_OUTPUT)-Windows-AMD64.zip build/$(APP_NAME)-Windows-AMD64.exezip -j $(PKG_OUTPUT)-Windows-ARM64.zip build/$(APP_NAME)-Windows-ARM64.exe# Linux 打包
.PHONY: package_linux
package_linux: linux_amd64 linux_arm64@echo "Packaging Linux versions..."tar -czvf $(PKG_OUTPUT)-Linux-AMD64.tar.gz -C build $(APP_NAME)-Linux-AMD64tar -czvf $(PKG_OUTPUT)-Linux-ARM64.tar.gz -C build $(APP_NAME)-Linux-ARM64# 帮助信息
.PHONY: help
help:@echo "Available targets:"@echo "  all              : Clean, build, and package the app for all platforms and architectures"@echo "  build            : Build the app for all platforms and architectures with version and Git hash"@echo "  clean            : Clean the build directory"@echo "  mac_amd64        : Build macOS AMD64 version"@echo "  mac_arm64        : Build macOS ARM64 version"@echo "  mac_universal    : Build macOS Universal version (AMD64 + ARM64)"@echo "  windows_amd64    : Build Windows AMD64 version"@echo "  windows_arm64    : Build Windows ARM64 version"@echo "  linux_amd64      : Build Linux AMD64 version"@echo "  linux_arm64      : Build Linux ARM64 version"@echo "  package          : Package the built apps into distributable files"@echo "  package_mac      : Package macOS apps"@echo "  package_windows  : Package Windows apps"@echo "  package_linux    : Package Linux apps"

说明

  • 改进打包命名:每个平台和架构的包文件有统一命名格式,方便分发。
  • 打包命令分离:每个平台(macOS、Windows、Linux)的打包命令都分离为单独的目标,避免文件路径冲突。
  • 包格式适配:macOS 使用 dmg,Windows 使用 zip,Linux 使用 tar.gz,更符合各平台的分发标准。
  • 文件路径清晰:各个平台的打包文件路径与文件名一致,避免可能的路径错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462449.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费送源码:Java+Springboot+MySQL Springboot酒店客房管理系统的设计与实现 计算机毕业设计原创定制

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对酒店客房管理等问题,对酒店客房…

力扣每日一题 超级饮料的最大强化能量 动态规划(dp)

来自未来的体育科学家给你两个整数数组 energyDrinkA 和 energyDrinkB,数组长度都等于 n。这两个数组分别代表 A、B 两种不同能量饮料每小时所能提供的强化能量。 你需要每小时饮用一种能量饮料来 最大化 你的总强化能量。然而,如果从一种能量饮料切换到…

Linux高阶——1027—守护进程

1、守护进程的基本流程 1、父进程创建子进程,父进程退出 守护进程是孤儿进程,但是是工程师人为创建的孤儿进程,低开销模式运行,对系统没有压力 2、子进程(守护进程)脱离控制终端,创建新会话 …

抗疫物资管理:SpringBoot技术应用案例

目 录 摘 要 1 前 言 2 第1章 概述 2 1.1 研究背景 3 1.2 研究目的 3 1.3 研究内容 4 第二章 开发技术介绍 5 2.1相关技术 5 2.2 Java技术 6 2.3 MySQL数据库 6 2.4 Tomcat介绍 7 2.5 Spring Boot框架 8 第三章 系统分析 9 3.1 可行性分析 9 3.1.1 技术可行性 9 3.1.2 经济可行…

pandas——数据结构

一、series (一)创建series import pandas as pd#1.使用列表或数组创建Series # 使用列表创建Series,索引默认从0开始 s1 pd.Series([1, 2, 3]) print(s1) # 使用列表和自定义索引创建Series s2 pd.Series([1, 2, 3], index[a, b, c]) pr…

MySQL的SQL语句之触发器的创建和应用

触发器 Trigger 一.触发器 作用:当检测到某种数据表发生数据变化时,自动执行操作,保证数据的完整性,保证数据的一致性。 1.创建一个触发器 如上图所示,查看这个create的帮助信息的时候,这个create trig…

服务器数据恢复—DELL EqualLogic PS6100系列存储简介及如何收集故障信息?

DELL EqualLogic PS6100系列存储采用虚拟ISCSI SAN阵列,支持VMware、Solaris、Linux、Mac、HP-UX、AIX操作系统,提供全套企业级数据保护和管理功能,具有可扩展性和容错功能。DELL EqualLogic PS6100系列存储介绍: 1、上层应用基础…

什么是无限钱包系统?有什么优势?

在数字货币风起云涌的今天,一个名为“无限钱包系统”的创新平台正悄然引领着行业的变革。它不仅重新定义了数字资产的管理方式,更以卓越的安全性、便捷的操作体验以及前瞻性的技术理念,成为了广大数字货币爱好者心中的理想之选。 一、数字货币…

API网关 - JWT认证 ; 原理概述与具体实践样例

API网关主要提供的能力,就是协议转换,安全,限流等能力。 本文主要是分享 如何基于API网关实现 JWT 认证 。 包含了JWT认证的流程,原理,与具体的配置样例 API网关认证的重要性 在现代Web应用和微服务架构中&#x…

前端加密解密

一、 AES 加密与解密 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。是一种对称加密算法也就是加密和解密用相同的密钥; 1.1 使用 crypto-js 实现 AES 加密 1.1.1 参数说明 data 要加密的明文key 秘钥iv …

基于知识引导提示的因果概念提取(论文复现)

基于知识引导提示的因果概念提取(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 基于知识引导提示的因果概念提取(论文复现)论文概述论文方法提示构造器获取典型概念集聚类典型概念构建训练数据训练主题分类器概念提取器输入构造指针网络置信度评分训练损失…

【element ui系列】分享几种实现el-table表格单选的方法

在实际的开发中,经常会用到从表格中选择一条记录的情况,虽然官方给出的例子,但是给人感觉看起来不明显,于是,在此基础上做了改进。接下来,介绍两种常见的实现方法: 1、采用复选框(checkbox)实现…

63 mysql 的 行锁

前言 我们这里来说的就是 我们在 mysql 这边常见的 几种锁 行共享锁, 行排他锁, 表意向共享锁, 表意向排他锁, 表共享锁, 表排他锁 意向共享锁, 意向排他锁, 主要是 为了表粒度的锁获取的同步判断, 提升效率 意向共享锁, 意向排他锁 这边主要的逻辑意义是数据表中是否有任…

江协科技STM32学习- P26 UART串口外设

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

使用 ADB 在某个特定时间点点击 Android 设备上的某个按钮

前提条件 安装 ADB:确保你已经在计算机上安装了 Android SDK(或单独的 ADB)。并将其添加到系统环境变量中,以便你可以在命令行中运行 adb。 USB调试:确保 Android 设备已启用 USB 调试模式。这可以在设备的“设置” -…

mint-ui Picker 显示异常

mint-ui Picker 显示异常 现象 最近一个老项目页面显示异常&#xff0c;使用mint-ui Picker显示异常,直接显示成了 数据对象&#xff0c;而不是具体travelName 字段 组件 mint-ui Picker 使用方式(vue方式) // template <mt-picker :slots"slots" value-key…

FastAPI性能对比:同步vs异步

大家好&#xff0c;FastAPI已成为构建Python API的最流行框架之一&#xff0c;因其速度和易用性而广受欢迎。但在构建高性能应用程序时&#xff0c;使用同步&#xff08;sync&#xff09;还是异步&#xff08;async&#xff09;代码执行是很重要的问题。本文将通过现实世界的性…

wx.setNavigationBarColor动态设置导航栏颜色无效(亲测有效)

wx.setNavigationBarColor动态设置导航栏颜色无效&#xff08;亲测有效&#xff09; 问题描述问题分析问题解决注意 问题描述 wx.setNavigationBarColor({frontColor: #E6E6E6,backgroundColor: #E6E6E6 })上面的代码设置后导航栏颜色没有变化&#xff0c;查看了app.json 以及…

Blender进阶:贴图与UV

9 UV 9.1 贴图与UV UV&#xff0c;指定每个面顶点在贴图上的坐标 演示&#xff1a; 1、添加物体 2、添加贴图&#xff0c;即图片纹理节点 3、进入UV Edit工作区 4、右边&#xff0c;选择一个面 5、左边&#xff0c;选择一个面&#xff0c;移动这个面 9.2 电子表格 电子…

利用LangChain与LLM打造个性化私有文档搜索系统

我们知道LLM&#xff08;大语言模型&#xff09;的底模是基于已经过期的公开数据训练出来的&#xff0c;对于新的知识或者私有化的数据LLM一般无法作答&#xff0c;此时LLM会出现“幻觉”。针对“幻觉”问题&#xff0c;一般的解决方案是采用RAG做检索增强。 但是我们不可能把…