如何针对Linux与Windows进行不同的构建

use*_*675 4 go

我正在看看Go语言.我有一个问题:例如,我将创建一个新的库,它应该使用一个Go包中的方法用于Windows,另一个用于Linux.

我只想问,是否有一种组织构建过程的便捷方式?当然,我可以为每个操作系统创建一个项目,并为每个操作系统更改导入名称.

pet*_*rSO 5

使用构建约束和文件名.请参阅包构建.Package os的源代码有很多例子:https://golang.org/src/os/.来源代码:https://go.googlesource.com/gohttps://github.com/golang/go.

Unix的构建约束:

// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
Run Code Online (Sandbox Code Playgroud)

一些构建文件名:

stat_darwin.go     stat_linux.go   stat_openbsd.go  stat_unix.go
stat_dragonfly.go  stat_nacl.go    stat_plan9.go    stat_windows.go
stat_freebsd.go    stat_netbsd.go  stat_solaris.go
Run Code Online (Sandbox Code Playgroud)

Go工具和标准库最初使用构建文件名,然后随着需求变得越来越复杂,开始使用构建约束.