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)