久々にOpenCVをビルドしようとしたら3つ引っかかりうまく行かなかったので、対処法を書いておきます。
元々の参考になるOpenCVが出してるMacでOpenCV3系をビルドする方法はこれです。
ただ、残念ながら今はこれではうまくいかないです。
Cmakeでconfigureとgenerateしたまではいいけど、makeでコケるようになりました。
問題1) fatal error: ‘sys/types.h’ file not found
このようなエラーが出ます
[ 0%] Building C object 3rdparty/zlib/CMakeFiles/zlib.dir/adler32.c.o In file included from /projects/opencv/3rdparty/zlib/adler32.c:8: In file included from /projects/opencv/3rdparty/zlib/zutil.h:22: In file included from /projects/opencv/3rdparty/zlib/zlib.h:34: /projects/opencv/build/3rdparty/zlib/zconf.h:423:14: fatal error: 'sys/types.h' file not found # include <sys/types.h> /* for off_t */ ^ 1 error generated. make[2]: *** [3rdparty/zlib/CMakeFiles/zlib.dir/adler32.c.o] Error 1 make[1]: *** [3rdparty/zlib/CMakeFiles/zlib.dir/all] Error 2 make: *** [all] Error 2
これはXcodeのコマンドラインツールに関係したエラーです。
シェル上で以下のコマンドを実行してXcodeのコマンドラインツールをInstall or Updateすれば大丈夫です。
xcode-select --install
これで1つ目は通過。次にこのエラーが出ます
問題2) modules/videoio/src/cap_qtkit.mm:46:9: fatal error: ‘QTKit/QTKit.h’ file not found
[ 46%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_qtkit.mm.o /projects/opencv/modules/videoio/src/cap_qtkit.mm:46:9: fatal error: 'QTKit/QTKit.h' file not found #import <QTKit/QTKit.h> ^ 1 error generated. make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_qtkit.mm.o] Error 1 make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2 make: *** [all] Error 2
これはQTKitが見つからないというものです。
CMakeでQT関係のチェックを入れて無くてもこれが出ます。
これはOpenCV3.0.0やOpenCV3.1.0などを使っていると出て来るエラーです。
QTがないとかじゃなくて、パスの問題らしいです。
それ以降のmasterブランチかそれより新しいOpenCVが出ている場合は(2016/12/19では3.1が最新)それを使えば大丈夫です。
gitでopencvを持ってきている人はmasterかそれより新しいバーjンををチェックアウトして再度やり直せばOKです。
問題3) modules/python/src2/cv2.cpp:6:10: fatal error: ‘Python.h’ file not found
[ 99%] Building CXX object modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o /projects/opencv/modules/python/src2/cv2.cpp:6:10: fatal error: 'Python.h' file not found #include <Python.h>
99%までいってエラーです。しょげないでくださいね。
Python.hが見つからないエラーです。
解決策は2つあります。
- 正しいパスを与える
- opencv_python2をそもそも不要にする
まず1ですが、python.hの場所が間違ってるだけなので
export C_INCLUDE_PATH=/System/Library/Frameworks/Python.framework/Headers
のように正しいパスを与えればOKです。
もしくは「いや、pythonからopencvつかわないし。」というのであれば
CMakeにおいて
「BUILD_opencv_python2」のチェックを外してconfigure->generateすればそもそもビルドされないのでOKです。