从项目目录的根目录运行 go generate 时,我在使用 go generate 生成 grpc 服务器时遇到了一些问题。
当我运行go generate -v
它只返回main.go
. 但是,这些指令是在一个子包中定义的。如果我go generate
在子包中运行,它会按预期工作。我希望导入能够确保go generate
找到子包并运行指令。
该项目具有以下结构:
cmd/
root.go
run.go
pkg/
subpkg/
protobuf/
proto1.proto
subpkg.go
main.go
subpkg.go 的内容
//go:generate protoc -I ./protobuf --go_out=plugins=grpc:./protobuf ./protobuf/proto1.proto
package subpkg
main.go 的内容:
package main
import (
"fmt"
"os"
"my-project/cmd"
)
func main() {
if err := cmd.RootCommand.Execute(); err != nil {
fmt.Println(err)
os.Exit(1)
}
}
在 run.go 包中,我导入包 subpkg。
如何确保 go generate 可以从项目的根目录运行并执行所有子包中的所有指令。