Hi there, I am working on installing CMake config files from the Qt repository so that there is less need for a FindQt.cmake.
The motivation is that between releases of Qt and CMake, the features of Qt get out of sync with the features available through FindQt.cmake, but with config files that is not the case. Additionally, as the Qt buildsystem knows everything about the package it is creating, it is possible to create config files that already 'know the answers' and locations of everything without having to find+query. The previous discussion on this is here: http://thread.gmane.org/gmane.comp.programming.tools.cmake.devel/2090 the current candidate for inclusion in Qt is here (which requires an account in the Qt jira): http://codereview.qt-project.org/#change,8518 and here (which does not): https://qt.gitorious.org/+kdab-developers/qt/kdab-developers- qtbase/commit/913fd3a1acffbae2ca8f6967dd951a03ff9f76a4 There is a small sticking point to this being in a finished state: In creating the imported targets, I attempt to create the same content as cmake creates when using install(EXPORTS). So I generate something along these lines: get_filename_component(_qt5_install_prefix ${CMAKE_CURRENT_LIST_DIR}/../../../ ABSOLUTE) set_property(TARGET Qt5Core APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) set_target_properties(Qt5Core PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG "" IMPORTED_LOCATION_DEBUG "${_qt5_install_prefix}/lib/libQtCore.so.5.0.0" IMPORTED_SONAME_DEBUG "libQtCore.so.5" ) set_property(TARGET Qt5Core APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(Qt5Core PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "" IMPORTED_LOCATION_RELEASE "${_qt5_install_prefix}/lib/libQtCore.so.5.0.0" IMPORTED_SONAME_RELEASE "libQtCore.so.5" ) That is, I generate the full file name for the IMPORTED_LOCATION including the library prefix and suffix, which are also used for the IMPORTED_SONAME. QMake does not provide the library prefix and suffix used in variables, as cmake does, but I believe there is also no way to change them in qmake. As a result I hardcode the prefixes and suffixes for windows/linux/max - .dll, .so etc. The Qt QMake maintainer does not like this, and requests that CMake determines the prefix and suffix instead. Does CMake provide any way for me to get the default prefix and suffix for libraries? If it does then I could generate something like this instead: IMPORTED_SONAME "${CMAKE_LIBRARY_PREFIX}QtCore.${CMAKE_LIBRARY_SUFFIX}.5" But I still don't think it's necessarily a good idea or the right change to make. QMake and CMake don't necessarily agree on what the prefix and suffix for libraries will be on different platforms for one thing. What would you consider a good idea? Could this have any implications for cross-compiling? Currently I generate IMPORTED_CONFIGURATIONS for debug and release (conditionally, depending on how Qt is built). Should I also generate code to set target properties for no configuration? Or should I only do that, and not have debug/release versions?: set_target_properties(Qt5Core PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES "" IMPORTED_LOCATION "${_qt5_install_prefix}/lib/libQtCore.so.5.0.0" IMPORTED_SONAME"libQtCore.so.5" ) Thanks for any guidance, Steve. -- 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