Windows环境下 如何使用Makefile打包一下Go项目

序:

相信很多做java很多年的同学都会一个思维惯性或者说是一种学习模式,即将新学习的语言与之前的语言进行比较然后再进行惯性的套用。本文以项目打包作为切入点,以java的文件打包模式来尝试打包Go项目。使用 Makefile 构建工具,构建时将静态文件复制到目标目录,随后一起打包。这种方式不将文件嵌入到二进制中,但仍能在同一分发中包含静态文件的打包方式深得我心。

 

目录

一、创建Makefile

二、如何使用 

三、window 环境使用

3.1使用powershell 并通过超管打开输入一下指令:

3.2 检查是否安装成功:

3.3可能存在问题:

1. 检查环境变量

2. 手动检查 Chocolatey 文件夹

3. 重新安装 Chocolatey

四、修改Makefile

五、执行

六、总结


一、创建Makefile

创建一个简单的 Makefile 来管理构建过程。下面是一个示例 Makefile:

# 设置变量
BINARY_NAME=myapp
SOURCE_FILES=main.go
STATIC_FILES=static/*

# 默认目标
all: build

# 构建目标
build: $(SOURCE_FILES) $(STATIC_FILES)
	mkdir -p bin
	go build -o bin/$(BINARY_NAME) $(SOURCE_FILES)

# 清理目标
clean:
	rm -rf bin/$(BINARY_NAME)

# 运行目标
run: build
	./bin/$(BINARY_NAME)

.PHONY: all build clean run

介绍一下文件中的命名: 

  • BINARY_NAME: 定义生成的二进制文件名。
  • SOURCE_FILES: 包含你的 Go 源代码文件。
  • STATIC_FILES: 包含你需要打包的静态文件路径。
  • all: 默认目标,执行 make 时会调用这个目标。
  • build: 该目标会构建 Go 应用,并将二进制文件输出到 bin 目录。
  • clean: 清理生成的二进制文件。
  • run: 编译并运行你的应用。

二、如何使用 

本人用的是goland编译工具,里面自带了powershell

make            # 构建应用
make run        # 构建并运行应用
make clean      # 清理生成的二进制文件

如何输出一个文件夹:

 

build: $(SOURCE_FILES)
	mkdir -p bin
	go build -o bin/$(BINARY_NAME) $(SOURCE_FILES)
	cp -r static bin/static

三、window 环境使用

在 Windows 系统上,make 命令通常不默认可用,因为它是 Unix/Linux 系统中的构建工具。

3.1使用powershell 并通过超管打开输入一下指令:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

3.2 检查是否安装成功:

choco --version

3.3可能存在问题:

choco --version
choco : 无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正
确,然后再试一次。
所在位置 行:1 字符: 1
+ choco --version
+ ~~~~~
    + CategoryInfo          : ObjectNotFound: (choco:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException 

如果遇到上述的问题,应该是没有安装成功,

如果 Chocolatey 不能正常工作,可能需要手动删除它。按照以下步骤操作:

1. 检查环境变量

确认 C:\ProgramData\chocolatey\bin 是否在你的系统环境变量 PATH 中:

  1. 在 Windows 搜索栏中,输入“环境变量”,然后选择“编辑系统环境变量”。
  2. 在系统属性窗口中,点击“环境变量”按钮。
  3. 在“系统变量”部分,找到 Path 变量并点击“编辑”。
  4. 确认 C:\ProgramData\chocolatey\bin 是否在列表中。如果没有,添加它。

2. 手动检查 Chocolatey 文件夹

确保 C:\ProgramData\chocolatey 文件夹存在。如果存在,里面应该有一些子文件夹,如 binlib 等。

3. 重新安装 Chocolatey

如果上述步骤都无法解决问题,你可以手动删除 Chocolatey,然后重新安装。按照以下步骤操作:

  1. 备份和删除:备份 C:\ProgramData\chocolatey 文件夹,然后删除它。

  2. 重新安装:使用以下命令重新安装 Chocolatey:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

 一旦 Chocolatey 正常工作,你可以通过以下命令安装 make

choco install make

四、修改Makefile

mkdir -p bin 修改为适合 Windows 的版本。可以使用以下代码:

# 设置变量
BINARY_NAME=myapp
SOURCE_FILES=cmd/main.go
STATIC_FILES=resource/*

# 默认目标
all: build

# 构建目标
build: $(SOURCE_FILES) $(STATIC_FILES)
	if not exist bin ( mkdir bin )
	go build -o bin/$(BINARY_NAME).exe $(SOURCE_FILES)
	if not exist bin\resource ( mkdir bin\resource )
	xcopy resource\* bin\resource /E /I /Y || echo "没有找到要复制的文件"


# 清理目标
clean:
	if exist bin\$(BINARY_NAME).exe ( del bin\$(BINARY_NAME).exe )
	if exist bin ( rmdir bin /s /q )

# 运行目标
run: build
	./bin/$(BINARY_NAME).exe

.PHONY: all build clean run

 注意上述代码是本人环境的代码,各位同学需将对于的路径进行调整。

五、执行

make build

确保你的根目录存在:

六、总结

上述就是本次如何使用Makefile打包一下Go项目全部内容,如果遇到问题可在评论区留言。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

童龙辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值