2013-06-07 12 views
7

śledzę te instructions które należą do doc OpenCV, ale są naprawdę przestarzałe: iOS4 lub iOS5 wspomniano, XCode 4.2 zainstalowany w/Developer, etc ..Jak zbudować OpenCV 2.4.9 na iOS?

To nie buduje, a ja mam różne błędy:

Wszystkie wstępnych testów zakończy się niepowodzeniem: - Performing Test HAVE_CXX_W - Failed również:

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

konfiguracja wygląda poprawne:

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

Ale później, mam ten pierwszy błąd łączenia: /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

czego brakuje w moim systemie skompilować OpenCV na iOS?

+0

Byłem w stanie zbudować 2.4.8 (od 27 grudnia 2013) bez żadnych problemów. Pamiętaj, że jest to najnowsza wersja oznaczona tagami. Wydaje mi się, że tytuł 2.4.9 pochodzi z zagmatwanych danych konfiguracyjnych. W szczegółach poniżej identyfikuje się jako wersja oparta na 2.4.5, która prawdopodobnie jest bardziej dokładna ze względu na czas pytania. – febeling

Odpowiedz

20

Zgodnie 3rdParty/libjpeg/CMakeLists.txt: 12, jmemansi.c jest wyłączony z produkcji:

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

jednak w module światowej produkcji, odpowiedni plik obiekt nie jest wykluczone z wejścia łącznika. To może być ustalona poprzez odfiltrowanie jmemansi.o od wejścia łącznikowej:

modułów/świat/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

Pracowałem dla mnie ... dzięki – Brandon

+0

Pracowałem też dla mnie, dzięki! – Goran

+0

Thxs a lot !!!! – hekomobile

1

Zamiast używać komend terminala podane w instrukcji instalacji OpenCV na oficjalnej stronie użytku następujące polecenia. Pracował dla mnie.

cd OpenCV-2.3.1

mkdir budować

cd budować

CUpewnij -G "Unix Makefile" ..

zrobić

sudo make install

+0

Czy to działa również w systemie iOS? czy tworzy plik .framework? Odnosząc się do tego pytania: http://stackoverflow.com/questions/23131249/compiling-opencv-for-ios-fails-cmake-fails – vatti

Powiązane problemy