让我的包工作区包含github.com/yada/yada
第三方包。在这个包里面有一个我想重用的yoda.go.h
标题(不确定它是不是一个好主意,但这是一个新问题)。如何将依赖包中的标头导入到我自己的包中?
package main
// #cgo pkg-config: my-dep other-dep
// #include <someHeader.h>
// #include <otherHeader.h>
// #include github.com/yada/yada/yoda.go.h // doesn't work :(
import "C"
除了好主意之外,我还是想知道是否可能。
PS:如果你认为这真的是一个坏主意,我该怎么做呢?答案 0 :(得分:3)
使用CGO CFLAGS指令引用其他包含路径。
//#cgo CFLAGS: -I $GOPATH/src/github.com/yada/yada/
...
//#include "yoda.go.h"
import "C"
<强> CORRECTION 强>:
go工具在构建期间不会扩展$ GOPATH变量。相反,应该在那里使用完整路径。更正后的代码:
//#cgo CFLAGS: -I /full/path/to/src/github.com/yada/yada/
//#include "yoda.go.h"
答案 1 :(得分:1)
尝试直接引用它可能不是一个好主意,因为它不是导出的实体,并且可能会被更改或删除。
如果您确实需要该标头,则必须直接在本地文件系统中引用它。 (当然,您也可以自由复制到您的项目中)