为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 包中持久设置 CGO_CFLAGS?

在 Go 包中持久设置 CGO_CFLAGS?

Go
ABOUTYOU 2021-07-31 18:42:59
我的 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 时应用它们。


查看完整回答
反对 回复 2021-08-02
  • 2 回答
  • 0 关注
  • 660 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信