前提
android eclipse | openFrameworksの手順(Android向けopenFrameworksの環境をEclipseで作る)に従っている場合を前提とします。
ちなみに筆者は、これ以外に「NDK_ROOT=」の指定が間違っていたために動作しなかった、というミスもやらかしています。
私が遭遇したエラーとその対応
ビルドの際に実行されたg++などのコマンドを見て、それが
- 「android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-g++」
などではなく
- 「android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86/bin/arm-linux-androideabi-g++」
のようになっている場合、以下が原因と見られる。
ダウンロードしたAndroid向けopenFrameworks中のファイル libs\openFrameworksCompiled\project\android\config.android.default.mk
における、プラットフォームを判定する部分において、「↓ここから追加部分」と「↑ここまで追加部分」という部分を書き加える。
# libs\openFrameworksCompiled\project\android\config.android.default.mk の抜粋
ifeq ($(shell uname),Darwin)
ifneq ($(wildcard $(NDK_ROOT)/toolchains/$(TOOLCHAIN)/prebuilt/darwin-x86_64),)
HOST_PLATFORM = darwin-x86_64
else
HOST_PLATFORM = darwin-x86
endif
else ifneq (,$(findstring MINGW32_NT,$(shell uname)))
ifneq ($(wildcard $(NDK_ROOT)/toolchains/$(TOOLCHAIN)/prebuilt/windows-x86_64),)
HOST_PLATFORM = windows-x86_64
else
HOST_PLATFORM = windows
endif
PWD = $(shell pwd)
# ↓ここから追加部分
else ifneq (,$(findstring MSYS_NT,$(shell uname)))
ifneq ($(wildcard $(NDK_ROOT)/toolchains/$(TOOLCHAIN)/prebuilt/windows-x86_64),)
HOST_PLATFORM = windows-x86_64
else
HOST_PLATFORM = windows
endif
PWD = $(shell pwd)
# ↑ここまで追加部分
else
ifneq ($(wildcard $(NDK_ROOT)/toolchains/$(TOOLCHAIN)/prebuilt/linux-x86_64),)
HOST_PLATFORM = linux-x86_64
else
HOST_PLATFORM = linux-x86
endif
endif
というのも、MSYS2の場合、uname
コマンドの実行結果が「MSYS_NT-10.0」という具合になり(私の環境)、上記のスクリプトではそれが検出できないためである。