gpt4 book ai didi

go - 为多个库版本构建 Go 绑定(bind)?

转载 作者:IT王子 更新时间:2023-10-29 02:24:01 29 4
gpt4 key购买 nike

我遇到过一个小hiccup当试图在 go-gtk fork 中合并 GTK3 支持时被 pond 使用与上游go-gtk基于 GTK2。

这些指定 GTK 版本的 cgo pkg-config 行必须出现在每个文件中,这可以防止 GTK 2 和 3 通用的绑定(bind)存在于通用文件中。

我想针对多个 GTK 版本构建编译文件的“惯用”技巧是:将通用代码放在 foo_common.go 文件中,这样它就永远不会构建。使用 perlbash + sed 脚本从 foo_common 构建 foo2.gofoo3.go .go 通过修复 cgo pkg-config 行并为 gtk2 标签添加 go build 指令。

最佳答案

您可以使用 build constrain又名标签来实现这一点。

首先你必须拆分使用 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

关于go - 为多个库版本构建 Go 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28901292/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com