On Nov 17, 2010, at 12:20 PM, Clinton Stimpson wrote:

For Qt projects, a macro for creating a qt.conf file and a macro for installing Qt plugins would be nice to have in FindQt4.cmake (anyone want to take a stab
at that?)


To say this needs cleaned up and refactored is an understatement but this is what I currently use to find the Qt Image Format plugins and make CMake variables for each of them.

#-------------------------------------------------------------------------------
# Finds plugins from the Qt installation. The pluginlist argument should be
# something like "qgif;qjpeg;qtiff"
#-------------------------------------------------------------------------------
macro (FindQt4Plugins pluginlist pluginfile libdirsearchfile plugintype)
  set (qt_plugin_list ${pluginlist})
  set (qt_plugin_types "Debug;Release")
  if (WIN32)
    set(qt_plugin_prefix "")
    set(qt_plugin_DEBUG_suffix "d4")
    set(qt_plugin_RELEASE_suffix "4")
  else ()
    set(qt_plugin_prefix "lib")
    set(qt_plugin_DEBUG_suffix "_debug")
    set(qt_plugin_RELEASE_suffix "")
  endif()

  #message(STATUS "qt_plugin_debug_suffix: ${qt_plugin_debug_suffix}")
  set (QTPLUGINS_RELEASE "")
  set (QTPLUGINS_DEBUG   "")
  set (QTPLUGINS "")

# Loop through all the Build Types and all the plugins to find each one.
  foreach(build_type ${qt_plugin_types})
    string(TOUPPER ${build_type} BTYPE)
      foreach(plugin ${qt_plugin_list})
                STRING(TOUPPER ${plugin} PLUGIN)
# message(STATUS "|-- Looking for ${plugin}${qt_plugin_$ {BTYPE}_suffix}")
        FIND_LIBRARY( QT_IMAGEFORMAT_PLUGIN_${PLUGIN}_${BTYPE}
                      NAMES ${plugin}${qt_plugin_${BTYPE}_suffix}
                      PATHS ${QT_PLUGINS_DIR}/${plugintype}
                      DOC "Library Path for ${plugin}"
NO_DEFAULT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH)

        if (MSVC)
            #  message(STATUS "QT_PLUGINS_DIR: ${QT_PLUGINS_DIR}")
# message(STATUS " QT_IMAGEFORMAT_PLUGIN_${PLUGIN}_$ {BTYPE}: ${QT_IMAGEFORMAT_PLUGIN_${PLUGIN}_${BTYPE}}") get_filename_component(lib_path ${QT_IMAGEFORMAT_PLUGIN_$ {PLUGIN}_${BTYPE}} PATH) get_filename_component(lib_name ${QT_IMAGEFORMAT_PLUGIN_$ {PLUGIN}_${BTYPE}} NAME_WE)
            #  message(STATUS "lib_path: ${lib_path}")
            #  message(STATUS "lib_name: ${lib_name}")
set (QT_IMAGEFORMAT_PLUGIN_${PLUGIN}_${BTYPE} ${lib_path}/ ${lib_name}.dll CACHE PATH "" FORCE) if ( ${QT_IMAGEFORMAT_PLUGIN_${PLUGIN}_${BTYPE}} STREQUAL "QT_IMAGEFORMAT_PLUGIN_${PLUGIN}_${BTYPE}-NOTFOUND") message(STATUS "A Companion DLL for ${upperlib}_LIBRARY_ ${TYPE} was NOT found which usually means" " that the library was NOT built as a DLL. I looked in the " " following locations: ${lib_path} \n ${lib_path}/..\n ${lib_path}/../bin")
            else()
# set(${upperlib}_LIBRARY_DLL_${TYPE} ${${upperlib}_LIBRARY_DLL_$ {TYPE}}/${lib_name}.dll) # message(STATUS "${upperlib}_LIBRARY_DLL_${TYPE}: ${$ {upperlib}_LIBRARY_DLL_${TYPE}}") # message(STATUS "Generating Install Rule for DLL File for QT_IMAGEFORMAT_PLUGIN_${PLUGIN}_${BTYPE}\n ${QT_IMAGEFORMAT_PLUGIN_$ {PLUGIN}_${BTYPE}}")
                                INSTALL(FILES 
${QT_IMAGEFORMAT_PLUGIN_${PLUGIN}_${BTYPE}}
                                        DESTINATION ./plugins/${plugintype}
                                        CONFIGURATIONS ${BTYPE}
                                        COMPONENT Runtime)
            endif()
                elseif (UNIX AND NOT APPLE)
                        INSTALL(FILES 
${QT_IMAGEFORMAT_PLUGIN_${PLUGIN}_${BTYPE}}
                DESTINATION ./plugins/${plugintype}
                CONFIGURATIONS ${BTYPE}
                COMPONENT Runtime)

        endif()



        mark_as_advanced(QT_IMAGEFORMAT_PLUGIN_${PLUGIN}_${BTYPE})
# message(STATUS "|-- QT_IMAGEFORMAT_PLUGIN_${PLUGIN}_${BTYPE}: $ {QT_IMAGEFORMAT_PLUGIN_${PLUGIN}_${BTYPE}}") LIST(APPEND QTPLUGINS_${BTYPE} ${QT_IMAGEFORMAT_PLUGIN_$ {PLUGIN}_${BTYPE}})
      endforeach()
        endforeach()

# Assign either the debug or release plugin list to the QTPLUGINS variable on NON msvc platforms.
        if (NOT MSVC)
          if ( NOT DEFINED CMAKE_BUILD_TYPE )
                if ( ${CMAKE_BUILD_TYPE} STREQUAL "Debug")
                        set (QTPLUGINS ${QTPLUGINS_DEBUG})
                else()
                        set (QTPLUGINS ${QTPLUGINS_RELEASE})
                endif()
          else()
                set (QTPLUGINS ${QTPLUGINS_RELEASE})
          endif()
        else()
# Create the qt.conf file so that the image plugins will be loaded correctly
                FILE(WRITE ${PROJECT_BINARY_DIR}/qt.conf "[Paths]\nPlugins = 
plugins")
                INSTALL(FILES ${PROJECT_BINARY_DIR}/qt.conf
                                DESTINATION .
                                COMPONENT Runtime)
        endif()
        file(APPEND ${pluginfile} "${QTPLUGINS};")
        file(APPEND ${libdirsearchfile} "${QT_PLUGINS_DIR}/imageformats;")
        
endmacro(FindQt4Plugins pluginlist)


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



_______________________________________________
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