我需要编译 proto 文件并动态生成 pb 文件。我在 Makefile 中有我的 protoc 命令。我打算从 golang init() 函数中触发它。如何从我的 golang 代码中调用这个 Makefile?尝试寻找解决方案,但他们都建议我如何以相反的方式实现这一目标。谢谢。
2 回答
杨魅力
TA贡献1811条经验 获得超6个赞
作为 Muffin Top 提到的内容的延续,我使用以下代码实现了这一点:
import (
"bytes"
"fmt"
"log"
"os/exec"
)
func init() {
e := exec.Command("make", "all")
var out bytes.Buffer
e.Stdout = &out
err := e.Run()
if err != nil {
log.Fatal(err)
}
fmt.Printf("Output: %q\n", out.String())
}
偶然的你
TA贡献1841条经验 获得超3个赞
您应该使用 go:generate 语法:
package main //go:generate protoc bla bla bla
当您运行“go build”命令时,它将运行代码中以 //go:generate 为前缀的所有内容
https://golang.org/pkg/cmd/go/internal/generate/
- 2 回答
- 0 关注
- 139 浏览
添加回答
举报
0/150
提交
取消