cmakeCMakeでiOS用のframeworkを作ってみる先日カッコいいと書いたBlitzを、頑張ってiOS用にビルドしたという話です。Blitzに限らずC/C++で書かれたライブラリがiOSに対応している事はまれで、あーiOSに対応してたら使いたいのになーというシーンはちょくちょくあります。.frameworkを作ろうとすると.xcodeprojを作ってどうのこうのという話になりがちで、普段Autotoolsでビルドしているソースツリーに特定のしかもプロプリエタリなIDEのプロジェクトファイルを追加するとか、醜すぎて誰もやりたくないわけです。ところが最近OpenCVがiOS用の.frameworkのアーカイブを別途配布しているのを知りまして、どうやってビルドしてんのかなと見てみると、CMakeで一旦xcodeprojを吐いてから、xcodebuildという流れになっていて、それをPythonスクリプトで纏めて、ワンコマンドで.frameworkが構築出来るようになっていました。iOS用のCMakeLists.txtは必要だし、結局xcodebuild叩いてるやんとかはあるんですけど、プロジェクトファイルを管理せずに済んでいるので、ソースの構成が変わるたびにプロジェクトファイルを編集するという残念な作業からは解放されているので、なるほどなと思いました。いうわけで、真似してBlitzのソースツリーから.frameworkを作ってみようという話ですね。CMakeでiOS用のframeworkを作ってみるiPhoneでOpenCV(2.2以降)を使う以前も同じ内容を書いたのですが、OpenCVの開発は大変活発で最新版を使おうと思ったら色々つまずいたので再度エントリを書いておきます。前回はniwさんのエントリをなぞっただけだったので、今回は自力でライブラリのビルドをしました。OpenCVのリポジトリヘッド(2.2以降)です。iPhoneでOpenCV(2.2以降)を使うCMakeの使い方メモOpenCVをソースからビルドしようとしたらCMakeが使われていたのですが、全然使い方がわからなかったので、少しだけ調べました。CMakeはビルド環境を作る為のツールで、CMakeFiles.txtにビルド条件を記述しておけば、環境に応じてビルド環境を自動生成してくれるというものです。具体的にはLinux上ではMakefileを、Mac上ではXcodeのプロジェクトファイルを、Windows上ではVisualStudioのプロジェクトファイルを自動生成してくれます。クロスプラットフォームなプログラムを書く際に、ソースコード互換さえ取れていれば、わざわざ環境ごとにビルド環境を作らなくても良くなりますので便利だということですね。