#48288: CMake generating broken Xcode projects when using OpenCV -----------------------------------+-------------------------------- Reporter: christian.richardt@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.3 Resolution: | Keywords: Port: opencv cmake | -----------------------------------+-------------------------------- Comment (by christian.richardt@…): The problem in `FRAMEWORK_SEARCH_PATHS = (//System/Library/Frameworks, );` indeed appears to be the double slash. Deleting one of the slashes manually (in all instances) fixes the Xcode project. Seems like Xcode is a little fragile in that respect, and maybe it's a a regression in Xcode. I narrowed it down to the `qt4` variant that adds the double slash in OpenCV: {{{ $ diff -c OpenCVModules-release\@3.0.0_0.cmake OpenCVModules- release\@3.0.0_0+qt4.cmake *** OpenCVModules-release@3.0.0_0.cmake 2015-06-22 21:27:25.000000000 +0200 --- OpenCVModules-release@3.0.0_0+qt4.cmake 2015-07-09 23:47:38.000000000 +0200 *************** *** 9,14 **** --- 9,15 ---- set_property(TARGET opencv_hal APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(opencv_hal PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" + IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "//System/Library/Frameworks/AGL.framework;//System/Library/Frameworks/OpenGL.framework" IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libopencv_hal.a" ) *************** *** 154,160 **** set_property(TARGET opencv_ts APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(opencv_ts PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" ! IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "opencv_hal;opencv_core;opencv_imgproc;opencv_imgcodecs;opencv_videoio;opencv_highgui" IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libopencv_ts.a" ) --- 155,161 ---- set_property(TARGET opencv_ts APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(opencv_ts PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" ! IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "opencv_hal;opencv_core;opencv_imgproc;opencv_imgcodecs;opencv_videoio;opencv_highgui;//System/Library/Frameworks/AGL.framework;//System/Library/Frameworks/OpenGL.framework" IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libopencv_ts.a" ) }}} {{{ $ diff opencv\@3.0.0_0.pc opencv\@3.0.0_0+qt4.pc 13c13 < Libs.private: -l-framework Cocoa -L/opt/local/lib -lpng -ltiff -ljasper -ljpeg -lImath -lIlmImf -lIex -lHalf -lIlmThread -lavcodec -lavformat -lavutil -lswscale -lavresample -lz -lbz2 -l-framework VideoDecodeAcceleration -l-framework QTKit -l-framework QuartzCore -l-framework AppKit ---
Libs.private: -L/opt/local/lib -lQtOpenGL -lQtGui -lQtTest -lQtCore -lpng -ltiff -ljasper -ljpeg -lImath -lIlmImf -lIex -lHalf -lIlmThread -lavcodec -lavformat -lavutil -lswscale -lavresample -lz -lbz2 -l-framework VideoDecodeAcceleration -l-framework QTKit -l-framework QuartzCore -l-framework AppKit -L//System/Library/Frameworks -lAGL -lOpenGL }}}
I tracked down the source to the following: if OpenCV is configured `WITH_QT`, and Qt is found, [https://github.com/Itseez/opencv/blob/b46719b0931b256ab68d5f833b8fadd83737dd... OpenCVFindLibsGUI.cmake] also adds `${OPENGL_LIBRARIES}` (AGL and OpenGL) to `OPENCV_LINKER_LIBS`. This appears to be the step that produces the broken paths. For some reason, the SDK path component is missing, which I do get if I do {{{ find_package(OpenGL REQUIRED) message(STATUS ${OPENGL_LIBRARIES}) }}} in a test project: {{{ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/AGL.framework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/OpenGL.framework }}} I don't understand why `find_package(OpenGL REQUIRED)` produces different paths when MacPort configures OpenCV than when I use it in my own project? -- Ticket URL: <https://trac.macports.org/ticket/48288#comment:4> MacPorts <https://www.macports.org/> Ports system for OS X