Warning, /graphics/kgeotag/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2020-2024 Tobias Leupold <tl at stonemx dot de>
0002 #
0003 # SPDX-License-Identifier: BSD-3-Clause
0004
0005 cmake_minimum_required(VERSION 3.16.0)
0006 project(kgeotag LANGUAGES CXX VERSION 1.5.0)
0007
0008 set(QT_MIN_VERSION "5.12")
0009 set(KF5_MIN_VERSION "5.68")
0010 set(KExiv2_MIN_VERSION "5.0.0")
0011 #FIXME: This can be set to 21.12.0 when Ubuntu LTS et al include this version.
0012 set(Marble_MIN_VERSION "")
0013
0014 set(CMAKE_CXX_STANDARD 17)
0015 set(CMAKE_CXX_STANDARD_REQUIRED ON)
0016 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
0017
0018 # Create a debugMode.h file according to the requested CMAKE_BUILD_TYPE
0019 if (CMAKE_BUILD_TYPE MATCHES Debug)
0020 message(STATUS "Enabling extra checks for CMAKE_BUILD_TYPE=Debug mode")
0021 set(DEBUG_MODE ON)
0022 endif()
0023 configure_file(${CMAKE_SOURCE_DIR}/src/debugMode.h.in ${CMAKE_BINARY_DIR}/debugMode.h)
0024
0025 # Local CMake modules
0026 list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
0027
0028 # Find ECM
0029 find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
0030 list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
0031 set(KDE_COMPILERSETTINGS_LEVEL "5.68")
0032 include(KDEInstallDirs)
0033 include(KDECMakeSettings)
0034 include(KDECompilerSettings NO_POLICY_SCOPE)
0035 include(ECMInstallIcons)
0036
0037 # Find Qt
0038 find_package(Qt5 ${QT_MIN_VERSION} COMPONENTS Widgets Network REQUIRED)
0039 set(CMAKE_AUTOMOC ON)
0040 add_definitions(
0041 -DQT_NO_CAST_FROM_ASCII
0042 -DQT_NO_CAST_TO_ASCII
0043 -DQT_NO_URL_CAST_FROM_STRING
0044 -DQT_NO_CAST_FROM_BYTEARRAY
0045 -DQT_DEPRECATED_WARNINGS
0046 -DQT_STRICT_ITERATORS
0047 -DQT_DISABLE_DEPRECATED_BEFORE=0x050B00
0048 )
0049
0050 # Find KDE
0051 find_package(KF5 ${KF5_MIN_VERSION}
0052 COMPONENTS CoreAddons I18n XmlGui ConfigWidgets Crash DocTools
0053 REQUIRED
0054 )
0055
0056 # Find KExiv2
0057 find_package(KF5KExiv2 ${KExiv2_MIN_VERSION} REQUIRED)
0058 if (${KF5KExiv2_FOUND})
0059 message(STATUS "Found KExiv2 version ${KF5KExiv2_VERSION}")
0060 endif()
0061
0062 # Find Marble
0063 find_package(Marble ${Marble_MIN_VERSION} REQUIRED)
0064 if (${Marble_FOUND})
0065 message(STATUS "Found Marble version ${Marble_VERSION}")
0066 endif()
0067
0068 # Generate version.h
0069 add_custom_target(
0070 UpdateVersion ALL
0071 COMMAND ${CMAKE_COMMAND} -DBASE_DIR=${CMAKE_SOURCE_DIR} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
0072 -DPROJECT_VERSION="${PROJECT_VERSION}"
0073 -P ${CMAKE_SOURCE_DIR}/cmake/UpdateVersion.cmake
0074 COMMENT "Updating version header"
0075 BYPRODUCTS ${CMAKE_BINARY_DIR}/version.h
0076 )
0077
0078 # Source files
0079 set(main_ROOT ${CMAKE_SOURCE_DIR}/src)
0080 set(kgeotag_SOURCES
0081 ${main_ROOT}/main.cpp
0082 ${main_ROOT}/SharedObjects.cpp
0083 ${main_ROOT}/Settings.cpp
0084 ${main_ROOT}/MainWindow.cpp
0085 ${main_ROOT}/PreviewWidget.cpp
0086 ${main_ROOT}/MapWidget.cpp
0087 ${main_ROOT}/ImagePreview.cpp
0088 ${main_ROOT}/SettingsDialog.cpp
0089 ${main_ROOT}/FixDriftWidget.cpp
0090 ${main_ROOT}/GpxEngine.cpp
0091 ${main_ROOT}/ElevationEngine.cpp
0092 ${main_ROOT}/BookmarksList.cpp
0093 ${main_ROOT}/BookmarksWidget.cpp
0094 ${main_ROOT}/CoordinatesDialog.cpp
0095 ${main_ROOT}/CoordinatesFormatter.cpp
0096 ${main_ROOT}/RetrySkipAbortDialog.cpp
0097 ${main_ROOT}/ImagesModel.cpp
0098 ${main_ROOT}/ImagesListView.cpp
0099 ${main_ROOT}/ImagesListFilter.cpp
0100 ${main_ROOT}/Coordinates.cpp
0101 ${main_ROOT}/AutomaticMatchingWidget.cpp
0102 ${main_ROOT}/MimeHelper.cpp
0103 ${main_ROOT}/ImagesLayer.cpp
0104 ${main_ROOT}/TracksLayer.cpp
0105 ${main_ROOT}/MapCenterInfo.cpp
0106 ${main_ROOT}/GeoDataModel.cpp
0107 ${main_ROOT}/TracksListView.cpp
0108 ${main_ROOT}/TrackWalker.cpp
0109 ${main_ROOT}/Logging.cpp
0110 )
0111
0112 qt_add_resources(kgeotag_SOURCES ${CMAKE_SOURCE_DIR}/kgeotag.qrc)
0113
0114 # Build the executable
0115 add_executable(kgeotag ${kgeotag_SOURCES})
0116 add_dependencies(kgeotag UpdateVersion)
0117 target_link_libraries(kgeotag
0118 PRIVATE
0119 Qt5::Widgets
0120 Qt5::Network
0121 KF5::CoreAddons
0122 KF5::I18n
0123 KF5::XmlGui
0124 KF5::ConfigWidgets
0125 KF5::Crash
0126 KF5::KExiv2
0127 Marble
0128 )
0129
0130 # Documentation
0131 kdoctools_create_handbook(
0132 doc/index.docbook
0133 INSTALL_DESTINATION "${KDE_INSTALL_DOCBUNDLEDIR}/en"
0134 SUBDIR kgeotag
0135 )
0136
0137 # Installation
0138
0139 install(TARGETS kgeotag ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
0140
0141 ecm_install_icons(
0142 ICONS icons/16-apps-kgeotag.png
0143 icons/22-apps-kgeotag.png
0144 icons/32-apps-kgeotag.png
0145 icons/48-apps-kgeotag.png
0146 icons/64-apps-kgeotag.png
0147 icons/128-apps-kgeotag.png
0148 DESTINATION ${KDE_INSTALL_ICONDIR})
0149
0150 install(FILES "timezones/timezones.png"
0151 "timezones/timezones.json"
0152 DESTINATION "${KDE_INSTALL_DATADIR}/kgeotag")
0153
0154 install(PROGRAMS org.kde.kgeotag.desktop DESTINATION ${KDE_INSTALL_APPDIR})
0155 install(FILES org.kde.kgeotag.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
0156
0157 ki18n_install(po)