[Objective-C]OpenCVのインストールでハマったお話

こんにちは、プログラマのLFです。

いま調査中のアプリで画像加工をやりたいなーと思い、Google先生に訪ねてみると、
「OpenCVがいいですよ」というサイトをたくさん紹介してくださったので
試しにインストールしてみることにしました。

ここからが苦難の始まりだとは知る由もなく…。

私はiOSのライブラリ管理ツールとして
「CocoaPods」を使い始めています。
 
ちなみにOS XであればHomebrewを使ったり、
Rubyであればrbenv、
Perlであればperlbrew、plenvと
この手の管理ツール大好きな人です。
まぁ上記のものはパッケージ管理ツールといったほうが正しいのかもしれませんが。

とにかく、自分でmakeすることなく、簡単にライブラリを導入したいわけです。
そんなわけでCocoaPodsを使い始めました。

CocoaPodsについては、下記のサイトが参考になるかと。
iOSライブラリ管理の神ツール「CocoaPods」のインストールと使い方 (1/2) 
iOSライブラリ管理ツール「CocoaPods」の使用方法 

OpenCVについて調べてみるとうれしいことにCocoaPodsに対応しているとのこと。
これは簡単にミッションクリアだなーと浮かれつつ、
以下のPodfileを作成して、インストール。


おお、できたできた。
インストールされたのは最新版の2.4.10か。
とりあえずビルドしてみるかと試したところ…。

ぎゃー!リンカエラーの雨霰!!!
なんで?なんで?
この時点で結構泣きそうでした。

シミュレータでも実機(iPhone6 8.1.1)でもダメ。
どうやらアーキテクチャが対応してないっぽい。

いろいろ検索してそれっぽい対策をしても結果は変わらず。

CocoaPodsのインストールがだめなのかなーと
本家サイトから最新版の2.4.10をダウンロードして
フレームワークだけインストールしても
結果は変わらず。

なんで?なんでなの?僕なんか悪いことした?
 
そんなとき下記のサイトを見つけました。
iOS OpenCV.frameworkは64bitビルドに対応していました 

ん? 64bit対応?
たしかにiPhone6のアーキテクチャのarm64って64bit対応だよなー。
で、2.4.10はarm64に対応してないよってエラーが表示されている、と…。

え、つまり2.4.10が64bit対応してないってこと?
まさかー、そんなー、最新版でデグレってるのー?
そんなこと……………………

ありました!!!!!!
 
試しに2.4.9のフレームワークをダウンロードしてビルドしたら
あっさりビルドが通りました。

まじかー、まじかー、まじかー(以下脳内でリピート )

じゃあ、CocoaPodsでバージョン指定してインストールしたら
いけるんじゃない?と下記のPodfileを作成してインストール。


はい、成功。
ビルドが通りました!

とりあえずいまのところ2.4.9を使うしかないのかなー。
 

ちなみにOpenCVでやりたかったことは、一瞬で調査が終わりましたとさ…。
切ない…。