cmake_minimum_required(VERSION 3.16) project(kde-ollie VERSION 0.1.0 LANGUAGES CXX) # Suppress CMP0160 warnings from KF5 cmake files (read-only IMPORTED property) cmake_policy(SET CMP0160 OLD) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) find_package(ECM REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings NO_POLICY_SCOPE) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) # Qt5 find_package(Qt5 REQUIRED COMPONENTS Core DBus Widgets Quick Qml) # KF5 find_package(KF5 REQUIRED COMPONENTS Notifications # includes KStatusNotifierItem Runner CoreAddons Config Plasma TextEditor ) # libollie.so built by Go (expected in build/ after `make lib`) set(OLLIE_LIB "${CMAKE_SOURCE_DIR}/build/libollie.so") set(OLLIE_HEADER "${CMAKE_SOURCE_DIR}/build/libollie.h") # --- Daemon --- qt5_add_dbus_adaptor(DBUS_ADAPTOR_SRCS daemon/org.ollie.SessionManager.xml daemon/session_manager.h SessionManager) add_executable(ollie-kde daemon/main.cpp daemon/session_manager.cpp ${DBUS_ADAPTOR_SRCS} ) target_include_directories(ollie-kde PRIVATE ${CMAKE_SOURCE_DIR}/build ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ) target_link_libraries(ollie-kde Qt5::Core Qt5::DBus ${OLLIE_LIB} ) # --- System Tray --- add_executable(ollie-tray tray/main.cpp tray/ollie_tray.cpp ) target_include_directories(ollie-tray PRIVATE ${CMAKE_SOURCE_DIR} ) target_link_libraries(ollie-tray Qt5::Core Qt5::DBus Qt5::Widgets KF5::Notifications ) # --- KRunner Plugin --- kcoreaddons_add_plugin(krunner_ollie SOURCES krunner/ollie_runner.cpp INSTALL_NAMESPACE "kf5/krunner") target_link_libraries(krunner_ollie KF5::Runner Qt5::Core Qt5::DBus Qt5::Widgets ) # --- Kate Plugin --- kcoreaddons_add_plugin(ollie_kate SOURCES kate/ollie_kate.cpp INSTALL_NAMESPACE "kf5/ktexteditor") target_link_libraries(ollie_kate KF5::TextEditor Qt5::Core Qt5::DBus Qt5::Widgets ) # --- Plasmoid QML Plugin (manual for Qt5) --- add_library(ollie-plasmoid-plugin SHARED plasmoid/plugin/olliedbusclient.cpp plasmoid/plugin/qmlplugin.cpp ) target_link_libraries(ollie-plasmoid-plugin Qt5::Core Qt5::DBus Qt5::Quick Qt5::Qml ) target_include_directories(ollie-plasmoid-plugin PRIVATE ${CMAKE_SOURCE_DIR}/plasmoid/plugin ) set_target_properties(ollie-plasmoid-plugin PROPERTIES OUTPUT_NAME "ollieprivateplugin" ) # --- Plasmoid Package --- plasma_install_package(plasmoid org.ollie.plasmoid) # --- Install --- install(TARGETS ollie-kde ollie-tray DESTINATION ${KDE_INSTALL_BINDIR}) install(TARGETS ollie-plasmoid-plugin DESTINATION ${KDE_INSTALL_QMLDIR}/org/ollie/private) install(FILES plasmoid/plugin/qmldir DESTINATION ${KDE_INSTALL_QMLDIR}/org/ollie/private)