diff --git a/cmake/FindQGIS.cmake b/cmake/FindQGIS.cmake index d4f25caa5e4..e90cb1c3a96 100644 --- a/cmake/FindQGIS.cmake +++ b/cmake/FindQGIS.cmake @@ -1,6 +1,6 @@ ## Once run this will define: ## -## QGIS_FOUND = system has QGIS lib +## QGIS_FOUND = system has QGIS lib ## ## QGIS_CORE_LIBRARY = full path to the CORE library ## QGIS_GUI_LIBRARY = full path to the GUI library @@ -9,6 +9,8 @@ ## QGIS_INCLUDE_DIR = where to find headers ## QGIS_UI_INCLUDE_DIR = where to find ui_* generated headers ## +## QGIS_VERSION = version as defined in qgsconfig.h, as major.minor.patch +## ## Definitions or ENV variables affecting search locations ## ## OSGEO4W_ROOT = [A-Z]:/path/to/OSGeo4W/install/root @@ -205,12 +207,35 @@ ELSE(WIN32) ENDIF(UNIX) ENDIF(WIN32) +IF (QGIS_INCLUDE_DIR) + SET(QGIS_VERSION QGIS_VERSION-NOTFOUND) + FIND_FILE(_qgsconfig_h qgsconfig.h PATHS ${QGIS_INCLUDE_DIR}) + IF (_qgsconfig_h) + FILE(READ ${_qgsconfig_h} _qgsconfig) + IF (_qgsconfig) + # version defined like #define VERSION "2.14.8-Essen" + FILE(STRINGS "${_qgsconfig_h}" _qgsversion_str REGEX "^#define VERSION .*$") + STRING(REGEX REPLACE "^#define VERSION +\"([0-9]+\\.[0-9]+\\.[0-9]+).*$" "\\1" _qgsversion "${_qgsversion_str}") + IF (_qgsversion) + SET(QGIS_VERSION ${_qgsversion}) + ELSE () + MESSAGE(WARNING "No QGIS version determined: failed to parse qgsconfig.h") + ENDIF () + ELSE() + MESSAGE(WARNING "No QGIS version determined: failed to read qgsconfig.h") + ENDIF () + ELSE () + MESSAGE(WARNING "No QGIS version determined: failed to find qgsconfig.h") + ENDIF () +ENDIF () + IF (QGIS_INCLUDE_DIR AND QGIS_CORE_LIBRARY AND QGIS_GUI_LIBRARY AND QGIS_ANALYSIS_LIBRARY) SET(QGIS_FOUND TRUE) ENDIF () IF (QGIS_FOUND) IF (NOT QGIS_FIND_QUIETLY) + MESSAGE(STATUS "Found QGIS: ${QGIS_VERSION}") MESSAGE(STATUS "Found QGIS core: ${QGIS_CORE_LIBRARY}") MESSAGE(STATUS "Found QGIS gui: ${QGIS_GUI_LIBRARY}") MESSAGE(STATUS "Found QGIS analysis: ${QGIS_ANALYSIS_LIBRARY}")