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

注意事项:

  1. 确保指定的目录存在且有写入权限
  2. 构建完成后可以清理该目录,但Go工具链通常会自动管理临时文件
  3. 这个设置会影响所有Go工具链操作(build、test、run等)

这样设置后,杀毒软件就可以只监控你指定的 C:\mybuild 目录,而不需要排除整个 %TEMP% 目录。

回到顶部