我如何 run/call 来自 golang 代码的 Makefile?
How can I run/call a Makefile from golang code?
我需要编译proto文件,动态生成pb文件。我在 Makefile 中有我的 protoc 命令。我打算从 golang init() 函数触发它。
如何从我的 golang 代码中调用这个 Makefile?尝试寻找解决方案,但所有这些都建议我如何通过相反的方式实现这一目标。
谢谢。
您应该使用 go:generate 语法:
package main
//go:generate protoc bla bla bla
当您 运行 您的“go build”命令时,它将 运行 您代码中的所有内容都以 //go:generate
为前缀
作为 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())
}
我需要编译proto文件,动态生成pb文件。我在 Makefile 中有我的 protoc 命令。我打算从 golang init() 函数触发它。
如何从我的 golang 代码中调用这个 Makefile?尝试寻找解决方案,但所有这些都建议我如何通过相反的方式实现这一目标。
谢谢。
您应该使用 go:generate 语法:
package main
//go:generate protoc bla bla bla
当您 运行 您的“go build”命令时,它将 运行 您代码中的所有内容都以 //go:generate
为前缀作为 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())
}