使用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(两个可执行文件)
很尴尬,但很管用。