Golang如何修改默认构建目录(%TEMP%)
Golang如何修改默认构建目录(%TEMP%) 您好,
我工作电脑上的杀毒软件总是将我的Go程序标记为恶意软件。不幸的是,它不允许在排除列表中使用通配符(否则我会添加 Temp\go-build*)。排除整个 %TEMP% 目录风险太大。
有没有办法告诉Go在用户指定的文件夹中进行构建/编译,而不是在 %temp% 目录下?
(我显然是在Windows系统上,否则就不会遇到这些愚蠢的问题了。)
谢谢。
3 回复
使用 gobuild 而非 gorun。
更多关于Golang如何修改默认构建目录(%TEMP%)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
感谢您的建议。遗憾的是,go build 在构建可执行文件时仍然使用 %TEMP%\go-build。
func main() {
fmt.Println("hello world")
}
可以通过设置 GOTMPDIR 环境变量来修改Go的默认构建目录。这个环境变量会指定Go工具链存放临时构建文件的目录,从而避免使用系统默认的 %TEMP% 目录。
设置方法:
1. 临时设置(当前命令行会话):
set GOTMPDIR=C:\mybuild
go build main.go
2. 永久设置(系统环境变量):
- 打开系统属性 → 高级 → 环境变量
- 新建系统变量:
- 变量名:
GOTMPDIR - 变量值:
C:\mybuild
- 变量名:
- 重启命令行工具使设置生效
3. 在代码中设置(程序启动时):
package main
import (
"os"
"os/exec"
)
func main() {
// 设置构建目录
os.Setenv("GOTMPDIR", "C:\\mybuild")
// 执行go命令
cmd := exec.Command("go", "build", "-o", "app.exe", ".")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Run()
}
4. 使用批处理脚本:
创建 build.bat:
@echo off
set GOTMPDIR=C:\mybuild
go build %*
验证设置:
set GOTMPDIR=C:\mybuild
go env GOTMPDIR
输出应该显示:C:\mybuild
注意事项:
- 确保指定的目录存在且有写入权限
- 构建完成后可以清理该目录,但Go工具链通常会自动管理临时文件
- 这个设置会影响所有Go工具链操作(build、test、run等)
这样设置后,杀毒软件就可以只监控你指定的 C:\mybuild 目录,而不需要排除整个 %TEMP% 目录。

