如何为iOS构buildOpenCV 2.4.9?

我遵循这些属于openCV doc的说明,但它们确实过时了:提到了iOS4或iOS5,在/ Developer中安装了XCode 4.2等。

它不会build立,我有各种错误:

所有初始testing失败: – Performing Test HAVE_CXX_W - Failed另外:

 -- Looking for fseeko -- Looking for fseeko - not found -- Looking for unistd.h -- Looking for unistd.h - not found -- Looking for sys/types.h -- Looking for sys/types.h - not found -- Looking for stdint.h -- Looking for stdint.h - not found -- Looking for stddef.h -- Looking for stddef.h - not found 

configuration看起来是正确的:

 -- General configuration for OpenCV 2.4.9 ===================================== -- Version control: 2.4.5-1168-g0a42a3e -- -- Platform: -- Host: Darwin 12.3.0 i386 -- Target: iOS -- CMake: 2.8.10 -- CMake generator: Xcode -- CMake build tool: /opt/local/bin/cmakexbuild -- Xcode: 4.6.2 [...] -- Media I/O: -- ZLib: build (ver 1.2.7) -- JPEG: build (ver 90) -- WEBP: NO -- PNG: build (ver 1.5.12) -- TIFF: NO -- JPEG 2000: NO -- OpenEXR: NO -- -- Video I/O: -- AVFoundation: YES -- QuickTime: NO -- QTKit: YES -- V4L/V4L2: NO/NO 

但后来,我有第一个链接错误: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't open file: /Users/ant/xcode/opencv/ios/build/iPhoneOS-armv7/3rdparty/libjpeg/OpenCV.build/Release-iphoneos/libjpeg.build/Objects-normal/armv7/jmemansi.o

我的系统上缺less编译OpenCV for iOS的东西?

根据3rdParty / libjpeg / CMakeLists.txt:12,jmemansi.c被排除在build之外:

 if(ANDROID OR IOS) ocv_list_filterout(lib_srcs jmemansi.c) else() ocv_list_filterout(lib_srcs jmemnobs.c) endif() 

但是,在世界模块构build中,相应的目标文件不会从链接器input中排除。 这可以通过从链接器input中滤除jmemansi.o来解决:

模块/世界/的CMakeLists.txt:84

 macro(ios_include_3party_libs) foreach(l ${ARGN}) add_dependencies(${the_module} ${l}) string(REGEX REPLACE "<MODULE_NAME>" "${l}" objpath1 "${CMAKE_BINARY_DIR}/3rdparty/${l}/${objpath0}") file(GLOB sources ${CMAKE_SOURCE_DIR}/3rdparty/${l}/*.c) foreach(srcname ${sources}) if(IS_ABSOLUTE "${srcname}") file(RELATIVE_PATH srcname "${CMAKE_SOURCE_DIR}/3rdparty/${l}" "${srcname}") endif() string(REPLACE ".." "__" srcname "${srcname}") get_filename_component(srcname_we ${srcname} NAME_WE) string(REGEX REPLACE <SRC_NAME_WE> "${srcname_we}" objpath2 "${objpath1}") string(REGEX REPLACE <RELATIVE_SRC_NAME> "${srcname}" objpath3 "${objpath2}") list(APPEND objlist "\"${objpath3}\"") endforeach() # (srcname ${sources}) endforeach() ocv_list_filterout(objlist jmemansi) # <<= dirty fix endmacro() 

官方网站的opencv安装指南中没有使用terminal命令,请使用以下命令。 为我工作。

光盘OpenCV-2.3.1

mkdir构build

CDbuild立

cmake -G“Unix Makefiles”

使

sudo make install