1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
# vim:set softtabstop=3 shiftwidth=3 tabstop=3 expandtab:
cmake_minimum_required(VERSION 3.16)
# KDE Frameworks
set(KF_VERSION "5.116.0") # handled by release scripts
set(KF_DEP_VERSION "5.116.0") # handled by release scripts
project (KActivities VERSION ${KF_VERSION})
option (KACTIVITIES_LIBRARY_ONLY "If true, compiles only the KActivities library, without the QML imports." OFF)
option (KACTIVITIES_ENABLE_EXCEPTIONS "If you have Boost 1.53, you need to build KActivities with exceptions enabled. This is UNTESTED and EXPERIMENTAL!" OFF)
set (REQUIRED_QT_VERSION 5.15.2)
# We don't build in-source
if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
message (
FATAL_ERROR
"kactivities require an out of source build. Please create a separate build directory and run 'cmake path_to_sources [options]' there."
)
endif ()
set (KACTIVITIES_CURRENT_ROOT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
# Extra CMake stuff
include(FeatureSummary)
find_package(ECM 5.116.0 NO_MODULE)
set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules")
feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})
include (KDEInstallDirs)
include (KDECMakeSettings)
include(KDEGitCommitHooks)
include (KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
include (GenerateExportHeader)
include (ECMGenerateHeaders)
include (ECMGeneratePkgConfigFile)
include (ECMQtDeclareLoggingCategory)
include (ECMAddQch)
include (ECMMarkNonGuiExecutable)
include(ECMDeprecationSettings)
include (ECMQmlModule)
option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF)
add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)")
# Qt
set (CMAKE_AUTOMOC ON)
find_package (Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} CONFIG REQUIRED COMPONENTS Core DBus)
# Basic includes
include (CPack)
include (CMakePackageConfigHelpers)
include (ECMSetupVersion)
message ("We are using the ${CMAKE_CXX_COMPILER_ID} compiler")
if ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (KACTIVITIES_OVERRIDE_VISIBILITY STREQUAL "default"))
message ("Setting visibility preset to default")
set(CMAKE_CXX_VISIBILITY_PRESET default)
set(CMAKE_VISIBILITY_INLINES_HIDDEN 0)
string (REPLACE "-fvisibility-inlines-hidden" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
string (REPLACE "-fvisibility=hidden" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
endif ()
# libKActivities
ecm_setup_version (
PROJECT
VARIABLE_PREFIX KACTIVITIES
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kactivities_version.h"
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5ActivitiesConfigVersion.cmake"
SOVERSION 5
)
ecm_set_disabled_deprecation_versions(
QT 5.15.2
KF 5.97.0
)
add_subdirectory (src)
if (BUILD_TESTING)
add_subdirectory (autotests)
add_subdirectory (tests)
endif()
set (CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Activities")
if (BUILD_QCH)
ecm_install_qch_export(
TARGETS KF5Activities_QCH
FILE KF5ActivitiesLibraryQchTargets.cmake
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
COMPONENT Devel
)
set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5ActivitiesLibraryQchTargets.cmake\")")
endif()
install (
EXPORT KF5ActivitiesLibraryTargets
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
FILE KF5ActivitiesLibraryTargets.cmake
NAMESPACE KF5::
)
configure_package_config_file (
"${CMAKE_CURRENT_SOURCE_DIR}/KF5ActivitiesConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/KF5ActivitiesConfig.cmake"
INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
)
install (
FILES "${CMAKE_CURRENT_BINARY_DIR}/KF5ActivitiesConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/KF5ActivitiesConfigVersion.cmake"
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
COMPONENT Devel
)
install (
FILES ${CMAKE_CURRENT_BINARY_DIR}/kactivities_version.h
DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KActivities COMPONENT Devel
)
# Write out the features
feature_summary (WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
|