[MacPorts] #48288: CMake generating broken Xcode projects when using OpenCV

MacPorts noreply at macports.org
Wed Jul 8 15:47:06 PDT 2015


#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          |
-----------------------------------+--------------------------------
Changes (by larryv@…):

 * cc: christian.richardt@… (removed)
 * cc: stromnov@…, michaelld@…, css@… (added)
 * port:  opencv => opencv cmake


Old description:

> I use OpenCV in projects for which I create Xcode projects using CMake. I
> found some issues in OpenCV configuration files that cause CMake to
> create invalid Xcode projects (error: "Project … cannot be opened because
> the project file cannot be parsed.")
>
> I'm using
> * opencv @3.0.0_0+eigen+opencl+openni+python27+qt4+tbb+vtk
> * cmake @3.2.3_0+docs+gui+python27+qt4
>
> I think that one or more of these OpenCV variants might trigger this bug,
> but it could also be a bug in OpenCV rather than its MacPort. However, as
> I've not found anyone else complaining about it online, I assume it's a
> MacPort-specific issue.
>
> Essentially, the string "/ /System/Library/Frameworks" (two leading
> slashes without space) somehow ends up in
> /opt/local/lib/pkgconfig/opencv.pc:
> {{{
> [...]
> Libs.private: -l-framework OpenCL -L/opt/local/lib [...] -ltbb
> -ltbbmalloc -L//System/Library/Frameworks -lAGL -lOpenGL
> [...]
> }}}
> and in /opt/local/share/OpenCV/OpenCVModules-release.cmake:
> {{{
> [...]
> set_target_properties(opencv_hal PROPERTIES
>   IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
>   IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "-ltbb
> -ltbbmalloc;//System/Library/Frameworks/AGL.framework;//System/Library/Frameworks/OpenGL.framework"
>   IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libopencv_hal.a"
>   )
> [...]
> 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;-ltbb
> -ltbbmalloc;//System/Library/Frameworks/AGL.framework;//System/Library/Frameworks/OpenGL.framework"
>   IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libopencv_ts.a"
>   )
> [...]
> }}}
>
> In a CMake project that uses OpenCV, any Xcode project created for it
> will contain the following line in "Project.xcodeproj/project.pbxproj":
> {{{
> FRAMEWORK_SEARCH_PATHS = (//System/Library/Frameworks, );
> }}}
> which prevents Xcode from opening the generated project as it cannot be
> parsed.
>
> Removing the "FRAMEWORK_SEARCH_PATHS" lines manually from
> "project.pbxproj" fixes the parsing error and the Xcode project can be
> opened as expected.
>
> Replacing the double leading slash in the two files mentioned above with
> a single slash, and re-running CMake, prevents the FRAMEWORK_SEARCH_PATHS
> lines from appearing in the first place, and Xcode projects work fine.
>
> This leads me to believe that the double slash should be replaced with a
> single slash, when /opt/local/lib/pkgconfig/opencv.pc and
> /opt/local/share/OpenCV/OpenCVModules-release.cmake are generated.

New description:

 I use OpenCV in projects for which I create Xcode projects using CMake. I
 found some issues in OpenCV configuration files that cause CMake to create
 invalid Xcode projects (error: "Project … cannot be opened because the
 project file cannot be parsed.")

 I'm using
 * opencv @3.0.0_0+eigen+opencl+openni+python27+qt4+tbb+vtk
 * cmake @3.2.3_0+docs+gui+python27+qt4

 I think that one or more of these OpenCV variants might trigger this bug,
 but it could also be a bug in OpenCV rather than its MacPort. However, as
 I've not found anyone else complaining about it online, I assume it's a
 MacPort-specific issue.

 Essentially, the string "!//System/Library/Frameworks" somehow ends up in
 /opt/local/lib/pkgconfig/opencv.pc:
 {{{
 [...]
 Libs.private: -l-framework OpenCL -L/opt/local/lib [...] -ltbb -ltbbmalloc
 -L//System/Library/Frameworks -lAGL -lOpenGL
 [...]
 }}}
 and in /opt/local/share/OpenCV/OpenCVModules-release.cmake:
 {{{
 [...]
 set_target_properties(opencv_hal PROPERTIES
   IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
   IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "-ltbb
 -ltbbmalloc;//System/Library/Frameworks/AGL.framework;//System/Library/Frameworks/OpenGL.framework"
   IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libopencv_hal.a"
   )
 [...]
 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;-ltbb
 -ltbbmalloc;//System/Library/Frameworks/AGL.framework;//System/Library/Frameworks/OpenGL.framework"
   IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libopencv_ts.a"
   )
 [...]
 }}}

 In a CMake project that uses OpenCV, any Xcode project created for it will
 contain the following line in "Project.xcodeproj/project.pbxproj":
 {{{
 FRAMEWORK_SEARCH_PATHS = (//System/Library/Frameworks, );
 }}}
 which prevents Xcode from opening the generated project as it cannot be
 parsed.

 Removing the "FRAMEWORK_SEARCH_PATHS" lines manually from
 "project.pbxproj" fixes the parsing error and the Xcode project can be
 opened as expected.

 Replacing the double leading slash in the two files mentioned above with a
 single slash, and re-running CMake, prevents the FRAMEWORK_SEARCH_PATHS
 lines from appearing in the first place, and Xcode projects work fine.

 This leads me to believe that the double slash should be replaced with a
 single slash, when /opt/local/lib/pkgconfig/opencv.pc and
 /opt/local/share/OpenCV/OpenCVModules-release.cmake are generated.

--

-- 
Ticket URL: <https://trac.macports.org/ticket/48288#comment:2>
MacPorts <https://www.macports.org/>
Ports system for OS X


More information about the macports-tickets mailing list