在 Go 包中持久设置 CGO_CFLAGS?

我的 Go 包包含一个 .c 文件,该文件使用需要某些 CFLAGS 集的库。在“go install”的命令行上,我可以指定CGO_CFLAGS所需的标志,一切正常。但是,我想这样做,以便有人可以“获取”我的包并构建它,而无需传递任何额外的命令行参数。

Go 打包系统是否提供了一个地方,我可以在其中放置一些这样的配置,以指定一些go install在打包时总是需要的参数?

(我知道#cgo CFLAGS:在 Go 源文件中做指令,但回想一下,在我的包中我有一个 .c 源文件,所以需要 CGO_CFLAGS 设置到整个构建过程)


ABOUTYOU
浏览 661回答 2
2回答

呼啦一阵风

为了使用您的任何 C 函数,您仍然需要将一些 cgo 混合到您的 .go 文件中,在这些文件中只需声明您的标志,例如:测试去:package mainimport "fmt"/*#cgo CFLAGS: -DTEST#include <stdio.h>extern void ACFunction();*/import "C"//export AGoFunctionfunc AGoFunction() {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println("AGoFunction()")}func main() {&nbsp; &nbsp; &nbsp; &nbsp; C.ACFunction()}测试.c:#include "_cgo_export.h"void ACFunction() {#ifdef TEST&nbsp; &nbsp; &nbsp; &nbsp; printf("ACFunction()\n");#endif&nbsp; &nbsp; &nbsp; &nbsp; AGoFunction();}将这些放在同一个目录中,会go build拾取 test.go 中定义的标志,并在构建 test.c 时应用它们。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go