## 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" )