Я пытаюсь создать файл cpp с функциями opencv.
В Go 1.3 говорится, что сборка Swig теперь включена в инструмент сборки Go, но я не нашел способа сказать этому инструменту сборки, чтобы добавить аргументы dirs и libs с помощью 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]
Кто-нибудь сделал это успешно?
Вы можете указать CGo использовать флаги include и link для конкретной библиотеки pkg-config, используя следующий синтаксис в одном из ваших исходных файлов Go:
// #cgo pkg-config: some-package
import "C"
То есть включите его вместе с любыми другими объявлениями в блок комментария, обрабатываемый cgo. Необходимо только включить это в один из .go
файлы в упаковке. Вы также можете указать дополнительные флаги компиляции и ссылки:
// #cgo CXXFLAGS: -std=c++11
// #cgo LDFLAGS: -L/some/library/dir -lfoo
Полную информацию можно найти в документация cgo
На данный момент Go не правильно передает включаемые пути в swig, если вы используете pkg-config, я отправил пластырь но, скорее всего, он не будет включен, пока не выйдет 1.4.
Таким образом, вы либо собираете Go с патчем, либо вручную указываете пути с #cgo CXXFLAGS / #cgo LDFLAGS
как предложил @JamesHenstridge.