尝试将hiccup使用的go-gtk fork中的GTK3支持与基于GTK2的上游pond合并时,我遇到了一个小go-gtk。< / p>
指定GTK版本的这些cgo pkg-config
行必须出现在每个文件中,这样可以防止GTK 2和3共有的绑定存在于公共文件中。
我认为&#34;惯用&#34; hack构建针对多个GTK版本的文件编译是:将公共代码放在foo_common.go
文件中,以便它永远不会构建。使用perl
或bash + sed
脚本通过修复foo2.go
行并为gtk2添加go build指令,从foo3.go
构建foo_common.go
和cgo pkg-config
标签。
答案 0 :(得分:0)
您可以使用build constrain aka标记来实现这一目标。
首先你必须拆分使用gtk2和gtk3的文件,然后假设你想要gtk3作为默认值(如果你将gtk2作为默认值,我会皱眉):
gtk3.go:
// +build !gtk2
package main
import "fmt"
func main() {
fmt.Println("gtk3")
}
gtk2.go:
// +build gtk2
package main
import "fmt"
func main() {
fmt.Println("gtk2")
}
然后测试它:
$ go build; and ./constrains
gtk3
$ go build -tags gtk2; and ./constrains
gtk2