有没有办法配置/直接go build等go test来使用绝对路径报告文件位置?我经常go build从编辑器(解析输出)运行,如果进程的当前工作目录go build和编辑器本身不需要匹配,那就很方便了。
到目前为止,我找到的唯一解决方案是封装go build一个确定文件绝对路径的脚本,然后在使用'd 原始参数cd调用之前立即转到临时目录。go buildrealpath
创建一个临时目录并cd访问它只是为了欺骗 go 工具似乎是一个奇怪的解决方法,所以我想知道是否有更直接的解决方案。
go tools除了包装绝对路径并cd随机目录之外,还有其他方法可以配置报告绝对路径吗?
假设我的GOPATH是/go并且我有以下文件。
// /go/src/nonexistent-website.com/example-2019-10-26/main.go
package main
import (
"fmt"
)
func main() {
fmt.Println("hi")
}
假设我故意在这个文件中引入一个错误。
// /go/src/nonexistent-website.com/example-2019-10-26/main.go
package main
// import (
// "fmt"
// )
func main() {
fmt.Println("hi")
}
go build main.go报告以下错误:
/go/src/nonexistent-website.com/example-2019-10-26$ go build main.go
# command-line-arguments
./main.go:9: undefined: fmt in fmt.Println
2
go build ...如果给定绝对路径,仍然报告./main.go为文件的路径
/go/src/nonexistent-website.com/example-2019-10-26$ go build `realpath main.go`
# command-line-arguments
./main.go:9: undefined: fmt in fmt.Println
2
go build似乎生成了相对于调用它的目录的路径:
go build这些是首先定向到cd根目录时生成的路径。
/go/src/nonexistent-website.com/example-2019-10-26$ (a=`realpath main.go` && cd / && go build $a)
# command-line-arguments
go/src/nonexistent-website.com/example-2019-10-26/main.go:9: undefined: fmt in fmt.Println
2
可以通过-ing 到保证是最新的目录来go build诱导发出绝对路径cd
/go/src/nonexistent-website.com/example-2019-10-26$ (a=`realpath main.go` && cd `mktemp -d` && go build $a)
# command-line-arguments
/go/src/nonexistent-website.com/example-2019-10-26/main.go:9: undefined: fmt in fmt.Println
2
小唯快跑啊
相关分类