From 51fd68cf71ac9b5f8138de7a91a2edff19d1dea6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jani=20V=C3=A4limaa?= <wally@mageia.org> Date: Sat, 7 Oct 2017 13:08:21 +0300 Subject: [PATCH] Use system QtSingleApplication --- CMakeLists.txt | 3 +- cmake/FindQtSingleApplication.cmake | 94 +++++++++++++++++++++++++++++++++++++ src/CMakeLists.txt | 3 +- 3 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 cmake/FindQtSingleApplication.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 93ff32d..44509f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -269,7 +269,8 @@ if(Mapper_WITH_COVE) add_subdirectory("3rd-party/cove") endif() if(NOT ANDROID) - add_subdirectory("3rd-party/qtsingleapplication") + find_package(Qt5Widgets REQUIRED) + find_package(QtSingleApplication REQUIRED) endif() if (Mapper_USE_GDAL) add_subdirectory("src/gdal") diff --git a/cmake/FindQtSingleApplication.cmake b/cmake/FindQtSingleApplication.cmake new file mode 100644 index 0000000..eb56607 --- /dev/null +++ b/cmake/FindQtSingleApplication.cmake @@ -0,0 +1,94 @@ +# - Try to find the QtSingleApplication includes and library +# which defines +# +# QTSINGLEAPPLICATION_FOUND - system has QtSingleApplication +# QTSINGLEAPPLICATION_INCLUDE_DIR - where to find header QtSingleApplication +# QTSINGLEAPPLICATION_LIBRARIES - the libraries to link against to use QtSingleApplication +# QTSINGLEAPPLICATION_LIBRARY - where to find the QtSingleApplication library (not for general use) + +# copyright (c) 2013 TI_Eugene ti.eugene@gmail.com +# +# Redistribution and use is allowed according to the terms of the FreeBSD license. + +SET(QTSINGLEAPPLICATION_FOUND FALSE) + +IF(QT4_FOUND) + message(STATUS "Looking for Qt4 single application library") + FIND_PATH(QTSINGLEAPPLICATION_INCLUDE_DIR QtSingleApplication + # standard locations + /usr/include + /usr/include/QtSolutions + # qt4 location except mac's frameworks + "${QT_INCLUDE_DIR}/QtSolutions" + # mac's frameworks + ${FRAMEWORK_INCLUDE_DIR}/QtSolutions + ) + + SET(QTSINGLEAPPLICATION_NAMES ${QTSINGLEAPPLICATION_NAMES} + QtSolutions_SingleApplication-2.6 libQtSolutions_SingleApplication-2.6) + FIND_LIBRARY(QTSINGLEAPPLICATION_LIBRARY + NAMES ${QTSINGLEAPPLICATION_NAMES} + PATHS ${QT_LIBRARY_DIR} + ) +ELSEIF(Qt5Widgets_FOUND) + message(STATUS "Looking for Qt5 single application library") + FOREACH(TOP_INCLUDE_PATH in ${Qt5Widgets_INCLUDE_DIRS} ${FRAMEWORK_INCLUDE_DIR}) + FIND_PATH(QTSINGLEAPPLICATION_INCLUDE_DIR QtSingleApplication ${TOP_INCLUDE_PATH}/QtSolutions) + + IF(QTSINGLEAPPLICATION_INCLUDE_DIR) + BREAK() + ENDIF() + ENDFOREACH() + + SET(QTSINGLEAPPLICATION_NAMES ${QTSINGLEAPPLICATION_NAMES} + Qt5Solutions_SingleApplication-2.6 libQt5Solutions_SingleApplication-2.6 + QtSolutions_SingleApplication-2.6 libQtSolutions_SingleApplication-2.6) + GET_TARGET_PROPERTY(QT5_WIDGETSLIBRARY Qt5::Widgets LOCATION) + GET_FILENAME_COMPONENT(QT5_WIDGETSLIBRARYPATH ${QT5_WIDGETSLIBRARY} PATH) + + FIND_LIBRARY(QTSINGLEAPPLICATION_LIBRARY + NAMES ${QTSINGLEAPPLICATION_NAMES} + PATHS ${QT5_WIDGETSLIBRARYPATH} + ) +ENDIF() + +IF (QTSINGLEAPPLICATION_LIBRARY AND QTSINGLEAPPLICATION_INCLUDE_DIR) + + SET(QTSINGLEAPPLICATION_LIBRARIES ${QTSINGLEAPPLICATION_LIBRARY}) + SET(QTSINGLEAPPLICATION_FOUND TRUE) + + IF (CYGWIN) + IF(BUILD_SHARED_LIBS) + # No need to define QTSINGLEAPPLICATION_USE_DLL here, because it's default for Cygwin. + ELSE(BUILD_SHARED_LIBS) + SET (QTSINGLEAPPLICATION_DEFINITIONS -DQTSINGLEAPPLICATION_STATIC) + ENDIF(BUILD_SHARED_LIBS) + ENDIF (CYGWIN) + +ENDIF (QTSINGLEAPPLICATION_LIBRARY AND QTSINGLEAPPLICATION_INCLUDE_DIR) + +IF (QTSINGLEAPPLICATION_FOUND) + IF (NOT QtSingleApplication_FIND_QUIETLY) + MESSAGE(STATUS "Found QtSingleApplication: ${QTSINGLEAPPLICATION_LIBRARY}") + MESSAGE(STATUS " includes: ${QTSINGLEAPPLICATION_INCLUDE_DIR}") + ENDIF (NOT QtSingleApplication_FIND_QUIETLY) +ELSE (QTSINGLEAPPLICATION_FOUND) + IF (QtSingleApplication_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find QtSingleApplication library") + ENDIF (QtSingleApplication_FIND_REQUIRED) +ENDIF (QTSINGLEAPPLICATION_FOUND) + +MARK_AS_ADVANCED(QTSINGLEAPPLICATION_INCLUDE_DIR QTSINGLEAPPLICATION_LIBRARY) + +if(NOT TARGET QtSingleApplication::QtSingleApplication) + add_library(QtSingleApplication::QtSingleApplication UNKNOWN IMPORTED) + set_target_properties(QtSingleApplication::QtSingleApplication PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${QTSINGLEAPPLICATION_INCLUDE_DIR}" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${QTSINGLEAPPLICATION_INCLUDE_DIR}" + ) + if(EXISTS "${QTSINGLEAPPLICATION_LIBRARY}") + set_target_properties(QtSingleApplication::QtSingleApplication PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${QTSINGLEAPPLICATION_LIBRARY}") + endif() +endif(NOT TARGET QtSingleApplication::QtSingleApplication) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ba528a3..67e9fef 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -309,7 +309,8 @@ if(ANDROID) else() add_executable(Mapper WIN32 MACOSX_BUNDLE ${Mapper_SRCS}) target_compile_definitions(Mapper PRIVATE MAPPER_USE_QTSINGLEAPPLICATION) - target_link_libraries(Mapper QtSingleApplication) + target_include_directories(Mapper PUBLIC ${QTSINGLEAPPLICATION_INCLUDE_DIR}) + target_link_libraries(Mapper ${QTSINGLEAPPLICATION_LIBRARIES}) endif() target_link_libraries(Mapper -- 2.14.2