是否有一种方法与Go构建一个以上的可执行文件与一个"去构建"命令?(和Rust一样)?



使用Rust,可以通过简单地在装载中指定它们来生成多个二进制目标。与目标相关联的Toml文件:


[[bin]]
name = "daemon"
path = "src/daemon/bin/main.rs"
[[bin]]
name = "client"
path = "src/client/bin/main.rs"

是否有一种方法来实现相同的Go模块,即构建一个以上的可执行文件与一个"去构建"命令?

问题示例

//main1.o
//package main
func main() {
println("From main1")
}
// - - 
//main2.o
//package main
func main() {
println("From main2")
}
// ---
go build:
// ---
//Result:

./main2.go:3:6: main redeclared in this block
/Users/sergehulne/Documents/code/Go/tst/main1.go:3:6: previous declaration

显然,解决方案是忽略与在一个Go模块中有多个main()函数相关的警告,并将这些文件分开编译,就好像它们是子模块一样。

go mod init tst  
package main
// file main1.go
func main() {
println("From main1")
}
package main
// file main2.go
func main() {
println("From main2")
}

,然后依次:

go build main1.go
go build main2.go

分别产生main1和main2(两个可执行文件)

很尴尬,但很管用。

最新更新