A number of ports are having issues either (1) finding qt4-mac's installed Qt
at all; and/or (2) finding a user-installed version of Qt instead (either fully
or partly; generally from the pre-compiled PKG from Nokia). I finally broke
down and downloaded the PKG version and installed it and did some testing.
Turns out that the issue is primarily broken CMake internal functions
FIND_LIBRARY and FIND_PATH (or, maybe, that the documentation on them is
incorrect).
Turns out that the fix -for MacPorts' purposes only- is very simple: Because
Qt4 is installed into ${prefix} and subdirectories, we can restrict the search
space to just the info provided by "qmake -query QT_INSTALL_PREFIX" and if that
doesn't work then Qt wasn't found. I'm certainly -not- going to mess around
with the FIND_* functions internal to QMake, but I hope there is a bug report
open since they are definitely broken (at least w/r.t. the ordering found in <
http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:find_library >).
See, e.g., the "FIND_LIBRARY" function call at about
${prefix}/share/cmake-2.8/Modules/FindQt4.cmake:604, and then read through the
supposed searching order from the URL.
The simple (obvious? non-robust?) solution is to add to any FIND_LIBRARY or
FIND_PATH call in the FindQt4.cmake file "NO_DEFAULT_PATH" if it is not already
there, or replace the other NO_* options with this one. NO_DEFAULT_PATH
restricts the search to just whatever paths or hints are provided to the
function. For MacPorts' usage, restricting is just fine since what we really
want is for the script to find the version installed by MacPorts, and only that
version, and to error out if not finding that version.
Problem: FindQt4.cmake is installed by both 'cmake' and 'kdelibs4' -- as are a
host of other .cmake scripts. It looks like those provided by KDE are older
than those from CMake (which would make sense), so I'm inclined to create a
patch for the cmake version of FindQt4.cmake & then rev bump cmake for it to
take effect. I'd also be inclined to delete those installed by KDE, just in
case -- not all of the .cmake files, but just duplicates.
Thoughts? - MLD
_______________________________________________
macports-dev mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev