2014-08-27 2 views
2

opencv 함수를 사용하여 cpp 파일을 빌드하려고합니다.외부 라이브러리가있는 Go + Swig 건물

go 1.3 빌드 빌드 도구에 swig building이 번들되어 있지만 빌드 도구에 pkg-config를 포함하는 dir 및 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] 

아무도 성공적으로 했습니까?

+0

-I와 ~ 사이에 공백 문자를 사용하는 것이 일반적입니까? clang ++ 라인의 시작 부분에? –

+0

"-I/usr/local/Cellar/opencv/2.4.9/include/opencv -I/usr/local/Cellar/opencv/2.4.9/include"를 사용하여 수동으로 실행하면 작동합니다. ' - 내가 뭘 알아? 않습니다, 그것을 제거 할 때 아무 효과가 없습니다 ^^ –

답변

4
당신은 포함하고 특정 PKG-설정 라이브러리에 대한 링크 플래그는 사용자의 이동 소스 파일 중 하나에서 다음 구문을 사용하여 사용하는 CGO 말할 수

:이다

// #cgo pkg-config: some-package 
import "C" 

는 다른과 함께 그것을 포함 cgo가 처리 한 주석 블록의 선언. 이 파일을 패키지의 .go 파일 중 하나에 포함하기 만하면됩니다. 또한 추가 컴파일 및 링크 플래그를 지정할 수 있습니다 : 당신은 PKG-설정을 사용하는 경우 꿀꺽 꿀꺽하는 경로를 포함 지금 현재, 이동이 제대로 통과하지

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

전체 세부 사항 the cgo documentation

+0

나는 이것이 1.7과 함께 작동한다는 것을 확인할 수 있습니다. – DH1TW

5

에서 찾을 수 있습니다, patch을 제출했지만 1.4가 출시 될 때까지는 포함되지 않을 가능성이 큽니다.

패치를 사용하여 Go를 빌드하거나 수동으로 @JamesHenstridge와 같은 #cgo CXXFLAGS/#cgo LDFLAGS 경로를 지정하십시오.

관련 문제