我的 Go 包包含一个 .c 文件,该文件使用需要某些 CFLAGS 集的库。在“go install”的命令行上,我可以指定CGO_CFLAGS所需的标志,一切正常。但是,我想这样做,以便有人可以“获取”我的包并构建它,而无需传递任何额外的命令行参数。Go 打包系统是否提供了一个地方,我可以在其中放置一些这样的配置,以指定一些go install在打包时总是需要的参数?(我知道#cgo CFLAGS:在 Go 源文件中做指令,但回想一下,在我的包中我有一个 .c 源文件,所以需要 CGO_CFLAGS 设置到整个构建过程)
2 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
为了使用您的任何 C 函数,您仍然需要将一些 cgo 混合到您的 .go 文件中,在这些文件中只需声明您的标志,例如:
测试去:
package main
import "fmt"
/*
#cgo CFLAGS: -DTEST
#include <stdio.h>
extern void ACFunction();
*/
import "C"
//export AGoFunction
func AGoFunction() {
fmt.Println("AGoFunction()")
}
func main() {
C.ACFunction()
}
测试.c:
#include "_cgo_export.h"
void ACFunction() {
#ifdef TEST
printf("ACFunction()\n");
#endif
AGoFunction();
}
将这些放在同一个目录中,会go build拾取 test.go 中定义的标志,并在构建 test.c 时应用它们。
- 2 回答
- 0 关注
- 660 浏览
添加回答
举报
0/150
提交
取消