The objective is to allow the end-user to
configure the library using Go build tags.
For example:
lib.go
---------------------------
package lib
#include "cpplib/common.cpp"
#include "cpplib/wrapper.cpp"
import "C"
---------------------------
backend1.go
---------------------------
// +build backend1
package lib
#include "cpplib/backend1.cpp"
import "C"
---------------------------
backend2.go
---------------------------
// +build backend2
package lib
#include "cpplib/backend2.cpp"
import "C"
---------------------------
So the user build the library for different backends:
>go install -tags backend1
or
>go install -tags backend2