The following issue has been SUBMITTED. ====================================================================== http://public.kitware.com/Bug/view.php?id=13060 ====================================================================== Reported By: Claus Christmann Assigned To: ====================================================================== Project: CMake Issue ID: 13060 Category: Reproducibility: always Severity: minor Priority: normal Status: new ====================================================================== Date Submitted: 2012-03-23 14:36 EDT Last Modified: 2012-03-23 14:36 EDT ====================================================================== Summary: FindQt4 relies on the command 'qmake -query QT_INSTALL_LIBS' to determine the lib path and ignores FIND_LIBRARY_USE_LIB64_PATHS Description: The FindQt4.cmake file which underlies find_package(Qt4) ignores the global property FIND_LIBRARY_USE_LIB64_PATHS. It starts searching for the Qt4 libraries with a HINT set to the output of an EXECUTE_PROCESS() call to 'qmake -query QT_INSTALL_LIBS' which always only seems to return the location of the 64 bit libraries (and plugins, and imports, and examples).
Steps to Reproduce: Simply run this CMakeLists.txt (also attached) and look at the output: project(findqt4_test) cmake_minimum_required(VERSION 2.8) # being lazy macro( message_variable VAR_NAME ) message(STATUS ${VAR_NAME}=${${VAR_NAME}}) endmacro( message_variable VAR_NAME ) # setting and checking the property set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS OFF) get_property(use_lib64_paths GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS) message_variable(use_lib64_paths) find_package(Qt4 REQUIRED) include( ${QT_USE_FILE} ) message_variable(QT_BINARY_DIR) # Path to "bin" of Qt4 message_variable(QT_LIBRARY_DIR) # Path to "lib" of Qt4 message_variable(QT_PLUGINS_DIR) # Path to "plugins" for Qt4 message_variable(QT_IMPORTS_DIR) # Path to "imports" of Qt4 message_variable(QT_LIBRARIES) Additional Information: I started messing with the FindQt4.cmake and wrapped the library finding part in a big IF() ENDIF() on the propery FIND_LIBRARY_USE_LIB64_PATHS and that worked. However, I then realized that I also would have to do that for the plugins and imports. As I realize that FIND_LIBRARY_USE_LIB64_PATHS actually should effect something inside the FIND_LIBRARY() calls, my workaround clearly started from a wrong approach. However, as FindQt4 is written in a way which doesn't seem to allow to use the property inside the FIND_LIBRARY() calls (it sets a HINT and at the same time NO_DEFAULT_PATHS), my wrapper seemed to circumvent this. Bottom line: I just don't know enough cmake to fix this "the right way", hence I am just reporting this without also submitting a patch. PS: As an aside note, I found that my distro (openSuSE 12.1 x86_64) doesn't set non-versioned symlinks for the 32bit libraries of qt, i.e. /usr/lib only contains libQt*.so.4 symlinks and no libQt*.so ones. I had to create those by hand so that find_library(QtCore) would actually return a result from the non-lib64 path. ====================================================================== Issue History Date Modified Username Field Change ====================================================================== 2012-03-23 14:36 Claus ChristmannNew Issue 2012-03-23 14:36 Claus ChristmannFile Added: CMakeLists.txt ====================================================================== -- 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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers