LoginSignup
2
2

More than 5 years have passed since last update.

Android向けopenFrameworksをWindows+MSYS2で使おうとするとビルドが失敗する場合

Last updated at Posted at 2016-07-14

前提

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」という具合になり(私の環境)、上記のスクリプトではそれが検出できないためである。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2