C++ Go+;带外部lib的Swig建筑

C++ Go+;带外部lib的Swig建筑,c++,go,swig,pkg-config,C++,Go,Swig,Pkg Config,我正在尝试用opencv函数构建一个cpp文件 Go 1.3声明swig building现在捆绑在Go build tool中,但我没有找到方法告诉该构建工具使用pkg config添加include dirs和libs args go test -x cv_test.go cd /Users/pierre/Projects/go-swig clang++ -I . -fPIC -m64 -pt

我正在尝试用opencv函数构建一个cpp文件

Go 1.3声明swig building现在捆绑在Go build tool中,但我没有找到方法告诉该构建工具使用pkg config添加include dirs和libs args

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]

有人成功地完成了吗?

您可以在一个Go源文件中使用以下语法告诉CGo使用特定pkg配置库的include和link标志:

// #cgo pkg-config: some-package
import "C"
也就是说,将其与cgo处理的注释块中的任何其他声明一起包含。只需将其包含在包中的一个
.go
文件中即可。还可以指定其他编译和链接标志:

// #cgo CXXFLAGS: -std=c++11
// #cgo LDFLAGS: -L/some/library/dir -lfoo

完整的详细信息可以在

中找到。现在,Go不能正确地将include path传递到swig。如果您使用pkg config,我提交了一个,但它很可能在1.4发布之前不会被包含


因此,您可以使用补丁程序构建Go,也可以使用
#cgo cxflags/#cgo LDFLAGS
手动指定路径,就像建议的@JamesHenstridge一样。

在-I和之间使用空格符是正常的。在clang++行的开头,如果我使用“-I/usr/local/ceral/opencv/2.4.9/include/opencv-I/usr/local/ceral/opencv/2.4.9/include”手动运行它,它就会工作。我不知道-I是什么。是的,当我移除它时它没有效果^^