我正在尝试使用opencv函数构建cpp文件。
Go 1.3说swig building现在捆绑在go build工具中,但我没有找到一种方法来告诉构建工具添加include dirs和libs args with pkg-config。
go test -x cv_test.go
cd /Users/pierre/Projects/go-swig
clang++ -I . -fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common -g -O2 -o $WORK/_/Users/pierre/Projects/go-swig/_obj/binding.cpp.o -c ./binding.cpp
# _/Users/pierre/Projects/go-swig
In file included from ./binding.cpp:1:
./binding.h:5:10: fatal error: 'cv.h' file not found
$WORK/command-line-arguments/_test/tiler.test
FAIL command-line-arguments [build failed]
有没有人成功做过?
答案 0 :(得分:5)
截至目前,如果你使用pkg-config,Go没有正确地将包含路径传递给swig,我提交了patch但很可能在1.4出局之前不会包括。
因此,您要么使用补丁构建Go,要么使用#cgo CXXFLAGS / #cgo LDFLAGS
手动指定路径,如@JamesHenstridge建议的那样。
答案 1 :(得分:4)
您可以使用以下语法在一个Go源文件中告知CGo使用特定pkg-config库的include和link标志:
// #cgo pkg-config: some-package
import "C"
也就是说,将它与cgo处理的注释块中的任何其他声明一起包含在内。只需将其包含在包中的一个.go
文件中即可。您还可以指定其他编译和链接标志:
// #cgo CXXFLAGS: -std=c++11
// #cgo LDFLAGS: -L/some/library/dir -lfoo