Building fails on Mac OS 10.4 (Tiger) due to calling 10.5-only stuff in highgui (Bug #211)
Description
Used to be able to build from svn using cmake on Mac OS 10.4 (Tiger) on ppc, but now get error as highgui is calling some 10.5 (Leopard)-only stuff. I only need to use GTK, so maybe add a WITH_COCOA ON/OFF option in cmake ? Don't know if that would work.
Compiler version : Apple gcc 4.2
OpenCV version : 2.1.0 revision 2875
[ 73%] Building CXX object src/highgui/CMakeFiles/highgui.dir/grfmt_tiff.o /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:57: warning: Mac OS X version 10.5 or later is needed for use of property /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:69: warning: Mac OS X version 10.5 or later is needed for use of property /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:70: warning: Mac OS X version 10.5 or later is needed for use of property /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:71: warning: Mac OS X version 10.5 or later is needed for use of property /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:72: warning: Mac OS X version 10.5 or later is needed for use of property /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:73: warning: Mac OS X version 10.5 or later is needed for use of property /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:74: warning: Mac OS X version 10.5 or later is needed for use of property /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:83: warning: Mac OS X version 10.5 or later is needed for use of property /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:84: warning: Mac OS X version 10.5 or later is needed for use of property /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:85: warning: Mac OS X version 10.5 or later is needed for use of property /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:86: warning: Mac OS X version 10.5 or later is needed for use of property /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm: In function 'int cvInitSystem(int, char**)': /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:111: error: 'NSAppKitVersionNumber10_5' was not declared in this scope /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:112: warning: 'NSApplication' may not respond to '-setActivationPolicy:' /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:112: warning: (Messages without a matching method signature /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:112: warning: will be assumed to return 'id' and accept /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:112: warning: '...' as arguments.) /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm: In function 'void cvDestroyAllWindows()': /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:142: warning: Mac OS X version 10.5 or later is needed for use of foreach-collection-statement /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:142: warning: 'NSMutableDictionary' may not respond to '-countByEnumeratingWithState:objects:count:' /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm: In function 'const char* cvGetWindowName(void*)': /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:325: warning: Mac OS X version 10.5 or later is needed for use of foreach-collection-statement /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:325: warning: 'NSMutableDictionary' may not respond to '-countByEnumeratingWithState:objects:count:' /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm: In function 'int cvWaitKey(int)': /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:390: warning: 'NSThread' may not respond to '+sleepForTimeInterval:' /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm: In function 'void -[CVWindow cvSendMouseEvent:type:flags:](CVWindow*, objc_selector*, NSEvent*, int, int)': /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:411: warning: Mac OS X version 10.5 or later is needed for use of foreach-collection-statement /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:411: warning: 'NSMutableDictionary' may not respond to '-countByEnumeratingWithState:objects:count:' /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm: In function 'void -[CVView setFrameSize:](CVView*, objc_selector*, NSSize)': /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:569: warning: Mac OS X version 10.5 or later is needed for use of foreach-collection-statement /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:569: warning: 'NSMutableDictionary' may not respond to '-countByEnumeratingWithState:objects:count:' /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm: In function 'void -[CVView drawRect:](CVView*, objc_selector*, NSRect)': /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:581: warning: Mac OS X version 10.5 or later is needed for use of foreach-collection-statement /Users/hmrmicrobiologie/opencv/src/highgui/window_cocoa.mm:581: warning: 'NSMutableDictionary' may not respond to '-countByEnumeratingWithState:objects:count:' maker2: *** [src/highgui/CMakeFiles/highgui.dir/window_cocoa.o] Error 1 maker2: *** Waiting for unfinished jobs.... /Users/hmrmicrobiologie/opencv/src/highgui/cvcap_qt.mm: In member function 'int [[CvCaptureCAM]]::startCaptureDevice(int)': /Users/hmrmicrobiologie/opencv/src/highgui/cvcap_qt.mm:382: error: 'kCVPixelFormatType_32BGRA' was not declared in this scope /Users/hmrmicrobiologie/opencv/src/highgui/cvcap_qt.mm:387: error: 'kCVPixelFormatType_32BGRA' was not declared in this scope /Users/hmrmicrobiologie/opencv/src/highgui/cvcap_qt.mm: In member function 'void [[CvCaptureCAM]]::setWidthHeight()': /Users/hmrmicrobiologie/opencv/src/highgui/cvcap_qt.mm:421: error: 'kCVPixelFormatType_32BGRA' was not declared in this scope /Users/hmrmicrobiologie/opencv/src/highgui/cvcap_qt.mm: In constructor 'CvVideoWriter_QT::CvVideoWriter_QT(const char*, int, double, [[CvSize]], int)': /Users/hmrmicrobiologie/opencv/src/highgui/cvcap_qt.mm:938: warning: 'NSFileManager' may not respond to '-removeItemAtPath:error:' /Users/hmrmicrobiologie/opencv/src/highgui/cvcap_qt.mm:938: warning: (Messages without a matching method signature /Users/hmrmicrobiologie/opencv/src/highgui/cvcap_qt.mm:938: warning: will be assumed to return 'id' and accept /Users/hmrmicrobiologie/opencv/src/highgui/cvcap_qt.mm:938: warning: '...' as arguments.) maker2: *** [src/highgui/CMakeFiles/highgui.dir/cvcap_qt.o] Error 1 maker1: *** [src/highgui/CMakeFiles/highgui.dir/all] Error 2 make: *** [all] Error 2
I have this set in cmake :
BUILD_EXAMPLES ON BUILD_LATEX_DOCS ON BUILD_NEW_PYTHON_SUPPORT OFF BUILD_OCTAVE_SUPPORT OFF BUILD_PACKAGE OFF BUILD_SHARED_LIBS ON BUILD_SWIG_PYTHON_SUPPORT OFF BUILD_TESTS ON CMAKE_BACKWARDS_COMPATIBILITY 2.4 CMAKE_BUILD_TYPE Debug CMAKE_CONFIGURATION_TYPES Debug;Release CMAKE_INSTALL_PREFIX /usr/local CMAKE_OSX_ARCHITECTURES ppc CMAKE_OSX_DEPLOYMENT_TARGET 10.4 CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.4u.sdk ENABLE_OPENMP OFF ENABLE_POWERPC ON ENABLE_PROFILING OFF EXECUTABLE_OUTPUT_PATH /Users/hmrmicrobiologie/opencv/opencv-svn-debug-42/bin INSTALL_C_EXAMPLES OFF INSTALL_OCTAVE_EXAMPLES OFF INSTALL_PYTHON_EXAMPLES OFF IPP_PATH IPP_PATH-NOTFOUND LIBRARY_OUTPUT_PATH /Users/hmrmicrobiologie/opencv/opencv-svn-debug-42/lib OPENCV_BUILD_3RDPARTY_LIBS ON OPENCV_CONFIG_FILE_INCLUDE_DIR /Users/hmrmicrobiologie/opencv/opencv-svn-debug-42 OPENCV_EXTRA_C_FLAGS OPENCV_EXTRA_C_FLAGS_DEBUG OPENCV_EXTRA_C_FLAGS_RELEASE OPENCV_EXTRA_EXE_LINKER_FLAGS OPENCV_EXTRA_EXE_LINKER_FLAGS_ OPENCV_EXTRA_EXE_LINKER_FLAGS_ OPENCV_WARNINGS_ARE_ERRORS OFF OPENCV_WHOLE_PROGRAM_OPTIMIZAT OFF PVAPI_INCLUDE_PATH PVAPI_INCLUDE_PATH-NOTFOUND USE_IPP OFF USE_O3 ON USE_OMIT_FRAME_POINTER ON USE_POWERPC ON WITH_1394 OFF WITH_FFMPEG OFF WITH_GSTREAMER OFF WITH_GTK ON WITH_JASPER ON WITH_JPEG ON WITH_PNG ON WITH_PVAPI OFF WITH_TBB OFF WITH_TIFF OFF WITH_UNICAP OFF WITH_V4L OFF WITH_XINE OFF
History
Updated by Vincent Leduc almost 15 years ago
- Status changed from Open to Done
- (deleted custom field) set to invalid
Updated by Vincent Leduc almost 15 years ago
Reason for previous error was in cvcap_qt.mm. Commented the offending lines and got past that. However, it still won't build on Tiger :
Linking CXX shared library ../../lib/libhighgui.dylib /usr/libexec/gcc/powerpc-apple-darwin8/4.2.1/ld: Undefined symbols: _objc_enumerationMutation collect2: ld returned 1 exit status maker2: *** [lib/libhighgui.2.1.0.dylib] Error 1 maker1: *** [src/highgui/CMakeFiles/highgui.dir/all] Error 2 make: *** [all] Error 2
A quick google tells me this error is in fact related to Cocoa/Carbon incompatibilities.
To maintain compatibility, maybe use something like a cmake toggle between Cocoa and Carbon like the one André Cohen has here ?
- Status changed from Done to Cancelled
- (deleted custom field) deleted (
invalid)
Updated by anonymous - almost 15 years ago
since r2924 you can select "WITH_CARBON" and "WITH_QUICKTIME" options in CMake, so that highgui will use older API. Hopefully, it will solve the problem. If not, please, reopen the ticket and provide the details.
- Status changed from Cancelled to Done
- (deleted custom field) set to fixed
Updated by Vincent Leduc almost 15 years ago
Works like a charm. Thank you.
Updated by Andrey Kamaev over 12 years ago
- Category changed from highgui-images to highgui-gui