我正在嘗試使用 exec.Command 編譯一個(gè) go 包。我成功地將參數(shù)設(shè)置為“go”和“build”,如下所示:package mainimport ( "fmt" "log" "os/exec")func main() { out, err := exec.Command("go", "build").Output() if err != nil { log.Fatal(err) } fmt.Println(out)}但是,在嘗試使用更多參數(shù)執(zhí)行“構(gòu)建”時(shí),我似乎做錯(cuò)了什么?這是我的代碼的樣子:package mainimport ( "fmt" "log" "os/exec")func main() { out, err := exec.Command("set", "GOOS=js&&", "set", "GOARCH=wasm&&", "go", "build", "-o", "C:/Users/Daniel/Desktop/go-workspace/src/sandbox/other/wasm/assets/json.wasm", "kard").Output() if err != nil { log.Fatal(err) } fmt.Println(out)}輸出是exec: "set": executable file not found in %PATH%我在命令行中為此執(zhí)行的正常命令是set GOOS=js&& set GOARCH=wasm&& go build -o C:\Users\Daniel\Desktop\go-workspace\src\sandbox\other\wasm\assets\json.wasm kard.我假設(shè)我對(duì)使用 exec.Command 有一些誤解?我真的很感謝任何支持。
1 回答

浮云間
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
該應(yīng)用程序使用 shell 語(yǔ)法設(shè)置環(huán)境變量,但 exec 包不使用 shell(除非您正在運(yùn)行的命令是 shell)。
使用命令環(huán)境為執(zhí)行的命令指定環(huán)境變量。
通常go build不會(huì)寫(xiě)入 stdout,但它會(huì)將錯(cuò)誤寫(xiě)入 stderr。使用 CombinedOutput 而不是 Output 可以輕松捕獲錯(cuò)誤文本。
cmd := exec.Command("go", "build", "-o", "C:/Users/Daniel/Desktop/go-workspace/src/sandbox/other/wasm/assets/json.wasm", "kard")
cmd.Env = []string{"GOOS=js", "GOARCH=wasm"}
out, err := cmd.CombinedOutput()
if err != nil {
fmt.Printf("%v: %s\n", err, out)
}
- 1 回答
- 0 關(guān)注
- 158 瀏覽
添加回答
舉報(bào)
0/150
提交
取消