2014-08-27 2 views
2

Я пытаюсь создать файл cpp с opencv функциями.Go + Swig building with external lib

Go 1.3 утверждает, что построение swig теперь связано с инструментом сборки go, но я не нашел способ сказать, что инструмент сборки для добавления include dirs и libs args с 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

Нормально ли иметь пробел между -I и. в начале строки clang ++? –

+0

Он работает, если я запускаю его вручную с помощью «-I/usr/local/Cellar/opencv/2.4.9/include/opencv -I/usr/local/Cellar/opencv/2.4.9/include« Я не знаю, Я знаю, что такое -I. делает, это не имеет никакого эффекта, когда я удаляю его ^^ –

ответ

4

Вы можете сказать, ОЦП использовать включают и ссылка флаги для конкретной библиотеки PKG-конфигурации, используя следующий синтаксис в одном из исходных файлов Go:

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

То есть, включить его вместе с какой-либо другой объявления в блоке комментариев, обработанные cgo. Это необходимо только включить в один из .go файлов в пакете. Кроме того, можно указать дополнительные компиляции и компоновки флаги:

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

Полную информацию можно найти в the cgo documentation

+0

Я могу подтвердить, что это работает с go 1.7 – DH1TW

5

Как прямо сейчас, Go не правильно пройти включают пути к глоток, если вы используете PKG-конфигурации, Я отправил patch, но, скорее всего, он не будет включен до тех пор, пока не будет выдан 1.4.

Итак, вы либо строите Go с патчем, либо вручную указываете пути с помощью #cgo CXXFLAGS/#cgo LDFLAGS, например, @JamesHenstridge.

Смежные вопросы