【发布时间】:2022-01-21 11:50:17
【问题描述】:
例如 go 文件中的 MY_NUM:
//#cgo CFLAGS: -DMY_NUM=3
/*
int multiple(int x) {
return x * MY_NUM;
}
*/
import "C"
....
但我会经常更改 MY_NUM 的值。所以我想在构建命令中更改它。
如何在go build 命令行中定义它?
【问题讨论】:
例如 go 文件中的 MY_NUM:
//#cgo CFLAGS: -DMY_NUM=3
/*
int multiple(int x) {
return x * MY_NUM;
}
*/
import "C"
....
但我会经常更改 MY_NUM 的值。所以我想在构建命令中更改它。
如何在go build 命令行中定义它?
【问题讨论】:
它不完全是 go build 选项,但您可以使用 CGO_CFLAGS 环境变量,例如:
$ cat foo.go
package main
/*
int multiple(int x) {
return x * MY_NUM;
}
*/
import "C"
import "fmt"
func main() {
fmt.Println(C.multiple(2))
}
$ CGO_CFLAGS="-DMY_NUM=10" go build foo.go
$ ./foo
20
$
构建时,CGO_CFLAGS、CGO_CPPFLAGS、CGO_CXXFLAGS、CGO_FFLAGS 并将 CGO_LDFLAGS 环境变量添加到派生的标志中 从这些指令。包特定的标志应该使用 指令,而不是环境变量,以便构建工作 未修改的环境。从环境变量获得的标志是 不受上述安全限制。
【讨论】: