Goで書いたUnityのネイティブプラグインをGo Mobileでビルドする #golang #unity
May 12, 2016
この記事はQiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。
はじめに
前回の記事では、iOSのビルドの際、ツールチェインの再ビルドをする必要があると書きましたが、Go Mobileのツールチェインを使えば必要ありません。
Go Mobileのインストール
Go Mobileについての詳細はこちらの記事を見て頂ければ良いと思いますが、インストールは非常に簡単です。 以下の2つのコマンドを走らせます。
$ go get -u golang.org/x/mobile/cmd/gomobile
$ gomobile init -v
もし、gomobile init
に失敗した場合は、一度$GOPATH/pkg/gomobile
ディレクトリを削除して、再度実行してみて下さい。
インストールに成功したら、以下のようにモバイル用にビルドされたパッケージが入ってるか見てみて下さい。
$ ls -1 $GOPATH/pkg/gomobile/
android-ndk-r10e
dl
pkg_android_386
pkg_android_amd64
pkg_android_arm
pkg_android_arm64
pkg_darwin_amd64
pkg_darwin_arm
pkg_darwin_arm64
version
Android向けにビルドする
ビルドするコードは前回のものと同じです。
ビルドコマンドもほとんど同じですが、-pkgdir
オプションを指定します。
このオプションを指定することで、Go Mobileによってインストールされているツールチェインを使ってビルドします。
arm-linux-androideabi-gcc
は$GOPATH/pkg/gomobile/android-ndk-r10e/arm/bin/
以下にあるものを使いますので、PATH
を通してください。
$ CGO_ENABLED=1 \
CC=arm-linux-androideabi-gcc \
GOOS=android \
GOARCH=arm \
GOARM=7 \
go build -buildmode=c-shared -pkgdir=$GOPATH/pkg/gomobile/pkg_android_arm -o libhoge.so hoge.go
iOS向けにビルドする
前回は、CC_FOR_TARGET
とCXX_FOR_TARGET
をmisc/ios/clangwrap.sh
で指定して、ツールチェインを再ビルドしたため、CC
やCXX
などをgo build
時に指定しましせんでしたが、今回は指定します。
GOOS=darwin \
GOARCH=arm \
GOARM=7 \
CC=`xcrun --sdk iphoneos -f clang` \
CXX=`xcrun --sdk iphoneos -f clang` \
CGO_CFLAGS="-isysroot `xcrun --sdk iphoneos --show-sdk-path` -arch armv7 -miphoneos-version-min=6.1" \
CGO_LDFLAGS="-isysroot `xcrun --sdk iphoneos --show-sdk-path` -arch armv7 -miphoneos-version-min=6.1" \
CGO_ENABLED=1 \
go build -pkgdir=$GOPATH/pkg/gomobile/pkg_darwin_arm -buildmode=c-archive -tags=ios -o hoge.a hoge.go
おわりに
今回はGo Mobileのツールチェインを使ってUnityのネイティブプラグインをビルドする方法について紹介しました。
-pkgdir
で指定するアーキテクチャも変えればarm64
などもビルドできると思います。