Qt5ChartsConfig.cmake 6.74 KB
Newer Older
xuebingbing's avatar
xuebingbing committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184

if (CMAKE_VERSION VERSION_LESS 3.1.0)
    message(FATAL_ERROR "Qt 5 Charts module requires at least CMake version 3.1.0")
endif()

get_filename_component(_qt5Charts_install_prefix "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)

# For backwards compatibility only. Use Qt5Charts_VERSION instead.
set(Qt5Charts_VERSION_STRING 5.11.2)

set(Qt5Charts_LIBRARIES Qt5::Charts)

macro(_qt5_Charts_check_file_exists file)
    if(NOT EXISTS "${file}" )
        message(FATAL_ERROR "The imported target \"Qt5::Charts\" references the file
   \"${file}\"
but this file does not exist.  Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
   \"${CMAKE_CURRENT_LIST_FILE}\"
but not all the files it references.
")
    endif()
endmacro()

macro(_populate_Charts_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION)
    set_property(TARGET Qt5::Charts APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})

    set(imported_location "${_qt5Charts_install_prefix}/bin/${LIB_LOCATION}")
    _qt5_Charts_check_file_exists(${imported_location})
    set_target_properties(Qt5::Charts PROPERTIES
        "INTERFACE_LINK_LIBRARIES" "${_Qt5Charts_LIB_DEPENDENCIES}"
        "IMPORTED_LOCATION_${Configuration}" ${imported_location}
        # For backward compatibility with CMake < 2.8.12
        "IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}" "${_Qt5Charts_LIB_DEPENDENCIES}"
    )

    set(imported_implib "${_qt5Charts_install_prefix}/lib/${IMPLIB_LOCATION}")
    _qt5_Charts_check_file_exists(${imported_implib})
    if(NOT "${IMPLIB_LOCATION}" STREQUAL "")
        set_target_properties(Qt5::Charts PROPERTIES
        "IMPORTED_IMPLIB_${Configuration}" ${imported_implib}
        )
    endif()
endmacro()

if (NOT TARGET Qt5::Charts)

    set(_Qt5Charts_OWN_INCLUDE_DIRS "${_qt5Charts_install_prefix}/include/" "${_qt5Charts_install_prefix}/include/QtCharts")
    set(Qt5Charts_PRIVATE_INCLUDE_DIRS
        "${_qt5Charts_install_prefix}/include/QtCharts/5.11.2"
        "${_qt5Charts_install_prefix}/include/QtCharts/5.11.2/QtCharts"
    )

    foreach(_dir ${_Qt5Charts_OWN_INCLUDE_DIRS})
        _qt5_Charts_check_file_exists(${_dir})
    endforeach()

    # Only check existence of private includes if the Private component is
    # specified.
    list(FIND Qt5Charts_FIND_COMPONENTS Private _check_private)
    if (NOT _check_private STREQUAL -1)
        foreach(_dir ${Qt5Charts_PRIVATE_INCLUDE_DIRS})
            _qt5_Charts_check_file_exists(${_dir})
        endforeach()
    endif()

    set(Qt5Charts_INCLUDE_DIRS ${_Qt5Charts_OWN_INCLUDE_DIRS})

    set(Qt5Charts_DEFINITIONS -DQT_CHARTS_LIB)
    set(Qt5Charts_COMPILE_DEFINITIONS QT_CHARTS_LIB)
    set(_Qt5Charts_MODULE_DEPENDENCIES "Widgets;Gui;Core")


    set(Qt5Charts_OWN_PRIVATE_INCLUDE_DIRS ${Qt5Charts_PRIVATE_INCLUDE_DIRS})

    set(_Qt5Charts_FIND_DEPENDENCIES_REQUIRED)
    if (Qt5Charts_FIND_REQUIRED)
        set(_Qt5Charts_FIND_DEPENDENCIES_REQUIRED REQUIRED)
    endif()
    set(_Qt5Charts_FIND_DEPENDENCIES_QUIET)
    if (Qt5Charts_FIND_QUIETLY)
        set(_Qt5Charts_DEPENDENCIES_FIND_QUIET QUIET)
    endif()
    set(_Qt5Charts_FIND_VERSION_EXACT)
    if (Qt5Charts_FIND_VERSION_EXACT)
        set(_Qt5Charts_FIND_VERSION_EXACT EXACT)
    endif()

    set(Qt5Charts_EXECUTABLE_COMPILE_FLAGS "")

    foreach(_module_dep ${_Qt5Charts_MODULE_DEPENDENCIES})
        if (NOT Qt5${_module_dep}_FOUND)
            find_package(Qt5${_module_dep}
                5.11.2 ${_Qt5Charts_FIND_VERSION_EXACT}
                ${_Qt5Charts_DEPENDENCIES_FIND_QUIET}
                ${_Qt5Charts_FIND_DEPENDENCIES_REQUIRED}
                PATHS "${CMAKE_CURRENT_LIST_DIR}/.." NO_DEFAULT_PATH
            )
        endif()

        if (NOT Qt5${_module_dep}_FOUND)
            set(Qt5Charts_FOUND False)
            return()
        endif()

        list(APPEND Qt5Charts_INCLUDE_DIRS "${Qt5${_module_dep}_INCLUDE_DIRS}")
        list(APPEND Qt5Charts_PRIVATE_INCLUDE_DIRS "${Qt5${_module_dep}_PRIVATE_INCLUDE_DIRS}")
        list(APPEND Qt5Charts_DEFINITIONS ${Qt5${_module_dep}_DEFINITIONS})
        list(APPEND Qt5Charts_COMPILE_DEFINITIONS ${Qt5${_module_dep}_COMPILE_DEFINITIONS})
        list(APPEND Qt5Charts_EXECUTABLE_COMPILE_FLAGS ${Qt5${_module_dep}_EXECUTABLE_COMPILE_FLAGS})
    endforeach()
    list(REMOVE_DUPLICATES Qt5Charts_INCLUDE_DIRS)
    list(REMOVE_DUPLICATES Qt5Charts_PRIVATE_INCLUDE_DIRS)
    list(REMOVE_DUPLICATES Qt5Charts_DEFINITIONS)
    list(REMOVE_DUPLICATES Qt5Charts_COMPILE_DEFINITIONS)
    list(REMOVE_DUPLICATES Qt5Charts_EXECUTABLE_COMPILE_FLAGS)

    set(_Qt5Charts_LIB_DEPENDENCIES "Qt5::Widgets;Qt5::Gui;Qt5::Core")


    add_library(Qt5::Charts SHARED IMPORTED)

    set_property(TARGET Qt5::Charts PROPERTY
      INTERFACE_INCLUDE_DIRECTORIES ${_Qt5Charts_OWN_INCLUDE_DIRS})
    set_property(TARGET Qt5::Charts PROPERTY
      INTERFACE_COMPILE_DEFINITIONS QT_CHARTS_LIB)

    set(_Qt5Charts_PRIVATE_DIRS_EXIST TRUE)
    foreach (_Qt5Charts_PRIVATE_DIR ${Qt5Charts_OWN_PRIVATE_INCLUDE_DIRS})
        if (NOT EXISTS ${_Qt5Charts_PRIVATE_DIR})
            set(_Qt5Charts_PRIVATE_DIRS_EXIST FALSE)
        endif()
    endforeach()

    if (_Qt5Charts_PRIVATE_DIRS_EXIST)
        add_library(Qt5::ChartsPrivate INTERFACE IMPORTED)
        set_property(TARGET Qt5::ChartsPrivate PROPERTY
            INTERFACE_INCLUDE_DIRECTORIES ${Qt5Charts_OWN_PRIVATE_INCLUDE_DIRS}
        )
        set(_Qt5Charts_PRIVATEDEPS)
        foreach(dep ${_Qt5Charts_LIB_DEPENDENCIES})
            if (TARGET ${dep}Private)
                list(APPEND _Qt5Charts_PRIVATEDEPS ${dep}Private)
            endif()
        endforeach()
        set_property(TARGET Qt5::ChartsPrivate PROPERTY
            INTERFACE_LINK_LIBRARIES Qt5::Charts ${_Qt5Charts_PRIVATEDEPS}
        )
    endif()

    _populate_Charts_target_properties(RELEASE "Qt5Charts.dll" "Qt5Charts.lib" )



    _populate_Charts_target_properties(DEBUG "Qt5Chartsd.dll" "Qt5Chartsd.lib" )



    file(GLOB pluginTargets "${CMAKE_CURRENT_LIST_DIR}/Qt5Charts_*Plugin.cmake")

    macro(_populate_Charts_plugin_properties Plugin Configuration PLUGIN_LOCATION)
        set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})

        set(imported_location "${_qt5Charts_install_prefix}/plugins/${PLUGIN_LOCATION}")
        _qt5_Charts_check_file_exists(${imported_location})
        set_target_properties(Qt5::${Plugin} PROPERTIES
            "IMPORTED_LOCATION_${Configuration}" ${imported_location}
        )
    endmacro()

    if (pluginTargets)
        foreach(pluginTarget ${pluginTargets})
            include(${pluginTarget})
        endforeach()
    endif()




_qt5_Charts_check_file_exists("${CMAKE_CURRENT_LIST_DIR}/Qt5ChartsConfigVersion.cmake")

endif()