Windows下如何更改Golang构建工作路径

18

我正在使用SublimeText3 (GoSublime插件)在Windows 8上测试简单的Go程序

go run -v example.go

运行之前,它被编译到 ..AppData\Local\Temp.. 目录中。我的杀毒软件认为它是病毒并将其阻止:

fork/exec C:\Users\D24F7~1.KAP\AppData\Local\Temp\go-build333212398\command-line-arguments_obj\exe\example.exe: Access is denied.

我无法禁用它,我的解决方案是更改编译位置所在的文件夹。我该怎么做?

4个回答

10

GOTMPDIR环境变量可用于控制工作目录。这通常比修改系统范围内的临时目录更可取。GOTMPDIR在go 1.10中被引入。

之前

> go run -work .\example.go
WORK=C:\Users\MyUserName\AppData\Local\Temp\go-build1002945170
...

系统属性 > 环境变量 窗口中永久修改,或者在Shell中临时修改

# powershell
$env:GOTMPDIR = "C:\Users\MyUserName\MyGoBuilds"

之后

> go run -work .\example.go
WORK=C:\Users\MyUserName\MyGoBuilds\go-build1381354702
...

然后您可以在GOTMPDIR目录上进行所需的反病毒软件或其他安全性例外。


3

WORK目录(如果使用-x标志构建或运行,则可见)取自TMP环境变量。通过系统属性更新该变量将更改工作目录。


1
我更改输出目录。
go build -i -o D:\Users\MyProj\out\

-o标志

并将D:\Users\MyProj\out\目录放入防病毒软件的忽略列表中


不,OP 问的是临时构建文件,与 -o 选项无关。 - Wojciech Kaczmarek

0

您可以直接使用go build构建二进制文件(输出二进制文件在当前目录),或者使用go build -o /your/custom/path指定自定义路径。然后只需运行输出的二进制文件即可。


3
这并不是一个解决方案,因为在 Windows 上,Go 会在临时文件夹中编译——_C:\Users\D24F7~1.KAP\AppData\Local\Temp_,然后再将其复制到 /your/custom/path 中。所以仍然会出现“访问被拒绝”的错误。 - Dmitry Kapsamun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接