LAMPCAE/cmake/FindQGIS.cmake

227 lines
8.0 KiB
CMake
Raw Normal View History

## Once run this will define:
##
## QGIS_FOUND = system has QGIS lib
##
## QGIS_CORE_LIBRARY = full path to the CORE library
## QGIS_GUI_LIBRARY = full path to the GUI library
## QGIS_ANALYSIS_LIBRARY = full path to the ANALYSIS library
## QGIS_PLUGIN_DIR = full path to where QGIS plugins are installed
## 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
## (^ use forward slashes!)
## OSGEO4W_QGIS_SUBDIR = qgis[-rel|-ltr][-dev], in OSGEO4W_ROOT/apps/
## QGIS_MAC_PATH = /path/to/any/QGIS.app/Contents
## QGIS_BUILD_PATH = [A-Z:]/path/to/QGIS/build/directory
##
## Tim Sutton
## Larry Shaffer (2017-01-31)
## 原本参数中需要考虑系统环境变量,这里替换为本地路径
##
##
if(LAMPCAE_QGIS_ALREADY_INCLUDED)
return()
endif()
set(LAMPCAE_QGIS_ALREADY_INCLUDED 1)
# 部分参数变量设置
SET(QGISPROGRAMFILES ${CMAKE_SOURCE_DIR}/extlib) # qgis 文件包地址
SET(OSGEO4W_QGIS_SUBDIR QGIS) # qgis 文件名
#MESSAGE("Searching for QGIS")
IF(WIN32)
# OSGEO4W_QGIS_SUBDIR relative install: qgis[-rel|-ltr][-dev], etc.
IF (NOT OSGEO4W_QGIS_SUBDIR OR "${OSGEO4W_QGIS_SUBDIR}" STREQUAL "")
IF (NOT "$ENV{OSGEO4W_QGIS_SUBDIR}" STREQUAL "")
SET (OSGEO4W_QGIS_SUBDIR $ENV{OSGEO4W_QGIS_SUBDIR})
ELSE ()
SET (OSGEO4W_QGIS_SUBDIR qgis)
ENDIF ()
ENDIF ()
#MESSAGE("Searching for QGIS in ${QGISPROGRAMFILES}/QGIS")
IF (MINGW)
FIND_PATH(QGIS_PLUGIN_DIR
NAMES libplugin_offlineediting.dll
PATHS
"${QGISPROGRAMFILES}/QGIS/plugins"
)
FIND_PATH(QGIS_INCLUDE_DIR
NAMES qgsapplication.h
PATHS
"${QGISPROGRAMFILES}/QGIS/include"
)
FIND_LIBRARY(QGIS_CORE_LIBRARY
NAMES qgis_core
PATHS
"${QGISPROGRAMFILES}/QGIS/"
)
FIND_LIBRARY(QGIS_GUI_LIBRARY
NAMES qgis_gui
PATHS
"${QGISPROGRAMFILES}/QGIS/"
)
ENDIF (MINGW)
IF (MSVC)
FIND_PATH(QGIS_PLUGIN_DIR
NAMES plugin_offlineediting.dll
PATHS
"$ENV{OSGEO4W_ROOT}/apps/${OSGEO4W_QGIS_SUBDIR}/plugins"
"${QGISPROGRAMFILES}/QGIS/plugins"
)
FIND_PATH(QGIS_INCLUDE_DIR
NAMES qgsapplication.h
PATHS
"$ENV{INCLUDE}"
"$ENV{LIB_DIR}/include/qgis"
"$ENV{OSGEO4W_ROOT}/include"
"$ENV{OSGEO4W_ROOT}/apps/${OSGEO4W_QGIS_SUBDIR}/include"
"${QGISPROGRAMFILES}/QGIS/include"
)
FIND_LIBRARY(QGIS_APP_LIBRARY
NAMES qgis_app
PATHS
"$ENV{LIB_DIR}/lib/"
"$ENV{LIB}"
"$ENV{OSGEO4W_ROOT}/lib"
"$ENV{OSGEO4W_ROOT}/apps/${OSGEO4W_QGIS_SUBDIR}/lib"
"${QGISPROGRAMFILES}/QGIS/lib"
)
FIND_LIBRARY(QGIS_CORE_LIBRARY
NAMES qgis_core
PATHS
"$ENV{LIB_DIR}/lib/"
"$ENV{LIB}"
"$ENV{OSGEO4W_ROOT}/lib"
"$ENV{OSGEO4W_ROOT}/apps/${OSGEO4W_QGIS_SUBDIR}/lib"
"${QGISPROGRAMFILES}/QGIS/lib"
)
FIND_LIBRARY(QGIS_GUI_LIBRARY
NAMES qgis_gui
PATHS
"$ENV{LIB_DIR}"
"$ENV{LIB}"
"$ENV{OSGEO4W_ROOT}/lib"
"$ENV{OSGEO4W_ROOT}/apps/${OSGEO4W_QGIS_SUBDIR}/lib"
"${QGISPROGRAMFILES}/QGIS/lib"
)
FIND_LIBRARY(QGIS_ANALYSIS_LIBRARY
NAMES qgis_analysis
PATHS
"$ENV{LIB_DIR}"
"$ENV{LIB}"
"$ENV{OSGEO4W_ROOT}/lib"
"$ENV{OSGEO4W_ROOT}/apps/${OSGEO4W_QGIS_SUBDIR}/lib"
"${QGISPROGRAMFILES}/QGIS/lib"
)
ENDIF (MSVC)
message("QGIS Found QGIS_INCLUDE_DIR ${QGIS_INCLUDE_DIR}")
message("QGIS Found QGIS_CORE_LIBRARY ${QGIS_CORE_LIBRARY}")
message("QGIS Found QGIS_GUI_LIBRARY ${QGIS_GUI_LIBRARY}")
message("QGIS Found QGIS_ANALYSIS_LIBRARY ${QGIS_ANALYSIS_LIBRARY}")
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}")
MESSAGE(STATUS "Found QGIS plugins directory: ${QGIS_PLUGIN_DIR}")
ENDIF (NOT QGIS_FIND_QUIETLY)
ELSE (QGIS_FOUND)
IF (QGIS_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find QGIS")
ENDIF (QGIS_FIND_REQUIRED)
ENDIF (QGIS_FOUND)
# QGIS::App QGIS::Core QGIS::Gui QGIS::Analysis
# 添加QGIS App导入库
add_library(QGIS::App SHARED IMPORTED)
set_property(TARGET QGIS::App PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${QGIS_INCLUDE_DIR})
set_property(TARGET QGIS::App APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_property(TARGET QGIS::App APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(QGIS::App PROPERTIES
IMPORTED_IMPLIB_RELEASE "${QGISPROGRAMFILES}/QGIS/lib/qgis_app.lib"
IMPORTED_LOCATION_RELEASE "${QGISPROGRAMFILES}/QGIS/bin/qgis_app.dll"
IMPORTED_IMPLIB_DEBUG "${QGISPROGRAMFILES}/QGIS/lib/qgis_app.lib"
IMPORTED_LOCATION_DEBUG "${QGISPROGRAMFILES}/QGIS/bin/qgis_app.dll"
)
add_library(QGIS::Core SHARED IMPORTED)
set_property(TARGET QGIS::Core PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${QGIS_INCLUDE_DIR})
set_property(TARGET QGIS::Core APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_property(TARGET QGIS::Core APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(QGIS::Core PROPERTIES
IMPORTED_IMPLIB_RELEASE "${QGISPROGRAMFILES}/QGIS/lib/qgis_core.lib"
IMPORTED_LOCATION_RELEASE "${QGISPROGRAMFILES}/QGIS/bin/qgis_core.dll"
IMPORTED_IMPLIB_DEBUG "${QGISPROGRAMFILES}/QGIS/lib/qgis_core.lib"
IMPORTED_LOCATION_DEBUG "${QGISPROGRAMFILES}/QGIS/bin/qgis_core.dll"
)
add_library(QGIS::Gui SHARED IMPORTED)
set_property(TARGET QGIS::Gui PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${QGIS_INCLUDE_DIR})
set_property(TARGET QGIS::Gui APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_property(TARGET QGIS::Gui APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(QGIS::Gui PROPERTIES
IMPORTED_IMPLIB_RELEASE "${QGISPROGRAMFILES}/QGIS/lib/qgis_gui.lib"
IMPORTED_LOCATION_RELEASE "${QGISPROGRAMFILES}/QGIS/bin/qgis_gui.dll"
IMPORTED_IMPLIB_DEBUG "${QGISPROGRAMFILES}/QGIS/lib/qgis_gui.lib"
IMPORTED_LOCATION_DEBUG "${QGISPROGRAMFILES}/QGIS/bin/qgis_gui.dll"
)
add_library(QGIS::Analysis SHARED IMPORTED)
set_property(TARGET QGIS::Analysis PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${QGIS_INCLUDE_DIR})
set_property(TARGET QGIS::Analysis APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_property(TARGET QGIS::Analysis APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(QGIS::Analysis PROPERTIES
IMPORTED_IMPLIB_RELEASE "${QGISPROGRAMFILES}/QGIS/lib/qgis_analysis.lib"
IMPORTED_LOCATION_RELEASE "${QGISPROGRAMFILES}/QGIS/bin/qgis_analysis.dll"
IMPORTED_IMPLIB_DEBUG "${QGISPROGRAMFILES}/QGIS/lib/qgis_analysis.lib"
IMPORTED_LOCATION_DEBUG "${QGISPROGRAMFILES}/QGIS/bin/qgis_analysis.dll"
)