2013-06-07 2 views
7

Sto seguendo questi instructions che appartengono al doc OpenCV, ma sono davvero obsoleti: iOS4 o iOS5 è menzionato, XCode 4.2 installato in/Developer, ecc ..Come compilare OpenCV 2.4.9 per iOS?

E non costruisce, e ho vari errori:

Tutti i test iniziali esito negativo: - Performing Test HAVE_CXX_W - Failed anche:

-- 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 

La configurazione sembra corretta:

-- 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 

Ma più tardi, ho questo primo errore di collegamento: /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

Ciò che manca sul mio sistema per compilare OpenCV per iOS?

+0

Sono stato in grado di costruire 2.4.8 (dal 27 dicembre 2013) senza problemi. Si noti che questa è l'ultima versione che viene taggata. Penso che il 2.4.9 nel titolo provenga dall'output di configurazione confuso. Nei dettagli di seguito si identifica come una revisione basata su 2.4.5, che probabilmente è più accurata data l'ora della domanda. – febeling

risposta

20

Come da 3rdParty/libjpeg/CMakeLists.txt: 12, jmemansi.c è escluso dalla costruzione:

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

Tuttavia, nel costruire il modulo mondo, il file oggetto corrispondente non è esclusa da input del linker. Questo può essere risolto filtrando jmemansi.o dall'input linker:

moduli/mondo/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() 
+0

Ha lavorato per me ... grazie – Brandon

+0

Ha lavorato anche per me, grazie! – Goran

+0

Thxs molto !!!! – hekomobile

1

Invece di utilizzare comandi terminali indicati nella guida di installazione opencv nel sito ufficiale, uso i seguenti comandi. Ha funzionato per me

cd OpenCV-2.3.1

mkdir costruire

cd costruire

cmake -G "Unix Makefiles" ..

fanno

sudo make install

+0

Funziona anche per iOS? crea file .framework? Facendo riferimento a questa domanda: http://stackoverflow.com/questions/23131249/compiling-opencv-for-ios-fails-cmake-fails – vatti