On Jul 19, 2010, at 4:28 PM, Michael Wild wrote:


On 19. Jul, 2010, at 19:59 , Michael Jackson wrote:

Wonder why I have never seen this before but with CMake 2.8.x and a Qt4 based project on OS X when finding the Qt4 frameworks only the release version is found, ie, the Debug version that is located inside the framework is NOT found by default. My question is: is this a bug, a "feature" or should I be using the DYLD_IMAGE_SUFFIX environment variable instead?

The offending code is in the FindQt4.cmake file around lines 772:

FIND_LIBRARY(QT_${_upper_qt_module}_LIBRARY_DEBUG
NAMES ${QT_MODULE}${QT_LIBINFIX}_debug ${QT_MODULE}$ {QT_LIBINFIX}d ${QT_MODULE}${QT_LIBINFIX}d4
               PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH
      )

I would imagine that the cmake code above is going to try and find QtCore_debug.framework and NOT QtCore.framework/versions/current/ QtCore_debug

Thoughts?
___________________________________________________________
Mike Jackson                      www.bluequartz.net
Principal Software Engineer       mike.jack...@bluequartz.net
BlueQuartz Software               Dayton, Ohio

Reading http://doc.trolltech.com/4.6/mac-differences.html#qt-libraries-as-frameworks seems to indicate that either setting DYLD_IMAGE_SUFFIX is one way to go, renaming the embedded library another. Not sure it would be all that desirable to explicitly link against the debug versions on Mac OS X...

Michael

Knowing how CMake was searching for the frameworks I ended up creating some symlinks to the QtCore.framework and QtGui.framework. QtCore_debug.framework points to QtCore.framework and the same for the other frameworks. This actually allowed CMake to find the debug libraries. Once those libraries were found I could then actually link against the debug versions. Which allows me to debug down into Qt itself which is what I needed. I agree that if you trust Qt and have no need to debug down into Qt then linking against the Debug versions probably is not needed. Setting the DYLD_IMAGE_SUFFIX environment variable to "_debug" caused the launching of my app inside gdb to go from about 10 seconds to 2 minutes as gdb was trying to load the debug version of every library that the app links against, plus all of their dependencies. By linking directly to the debug versions of the Qt libraries the launch times only increased a small amount. I don't think there is really any type of patch that I could submit. Merely creating the symlinks in the Qt/lib installation directory seems to have solved the issue, at least for me.

Thanks for the sanity check
Mike Jackson





_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to