set(VERSION_MAJOR 1) set(VERSION_MINOR 0) set(VERSION_MICRO 0) set(UKUI_NOTIFICATION_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO}) find_package(KF5WindowSystem) find_package(PkgConfig REQUIRED) set(UKUI_NOTIFICATION_EXTERNAL_LIBS "") set(UKUI_NOTIFICATION_PC_PKGS ukui-search) foreach(PC_LIB IN ITEMS ${UKUI_NOTIFICATION_PC_PKGS}) pkg_check_modules(${PC_LIB} REQUIRED ${PC_LIB}) if(${${PC_LIB}_FOUND}) include_directories(${${PC_LIB}_INCLUDE_DIRS}) link_directories(${${PC_LIB}_LIBRARY_DIRS}) list(APPEND UKUI_NOTIFICATION_EXTERNAL_LIBS ${${PC_LIB}_LIBRARIES}) endif() endforeach() include_directories(notification-settings) set(ukui-notification_LIB_SRCS notification-client.cpp notification-client.h popup-notification.h popup-notification.cpp ukui-notification_global.h notification-client-private.h utils.h utils.cpp notification-close-reason.h notification-settings/settings-properties.h notification-settings/settings-properties-info.h notification-settings/settings-properties-info.cpp notification-settings/settings-manager-private.h notification-settings/settings-manager.h notification-settings/settings-manager.cpp notification-settings/notification-global-settings.cpp notification-settings/notification-global-settings.h notification-settings/single-application-settings.cpp notification-settings/single-application-settings.h notification-settings/applications-settings.cpp notification-settings/applications-settings.h) set(HEADERS notification-client.h popup-notification.h notification-close-reason.h notification-settings/settings-properties.h notification-settings/settings-properties-info.h notification-settings/notification-global-settings.h notification-settings/single-application-settings.h notification-settings/applications-settings.h ukui-notification_global.h utils.h) if(COMMAND qt_add_dbus_interface) qt_add_dbus_interface(ukui-notification_LIB_SRCS ../dbus/org.freedesktop.Notifications.xml notifications_interface) qt_add_dbus_adaptor(ukui-notification_LIB_SRCS ../dbus/org.ukui.NotificationClient.xml notification-client-private.h UkuiNotification::NotificationClientPrivate) else() qt5_add_dbus_interface(ukui-notification_LIB_SRCS ../dbus/org.freedesktop.Notifications.xml notifications_interface) qt5_add_dbus_adaptor(ukui-notification_LIB_SRCS ../dbus/org.ukui.NotificationClient.xml notification-client-private.h UkuiNotification::NotificationClientPrivate) endif() add_library(ukui-notification SHARED ${ukui-notification_LIB_SRCS}) target_link_libraries(ukui-notification PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::DBus Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Qml KF5::WindowSystem ${UKUI_NOTIFICATION_EXTERNAL_LIBS} ) include(CMakePackageConfigHelpers) set(CMAKECONFIG_INSTALL_DIR "/usr/share/cmake/ukui-notification") set(HEADERS_INSTALL_DIR /usr/include/ukui-notification) set(PC_INSTALL_DIR "/usr/lib/pkgconfig") target_include_directories(ukui-notification PUBLIC $) configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/ukui-notification-config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/ukui-notification-config.cmake" INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}) write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/ukui-notification-config-version.cmake VERSION ${UKUI_NOTIFICATION_VERSION} COMPATIBILITY SameMajorVersion ) configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/ukui-notification.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/ukui-notification.pc" INSTALL_DESTINATION ${PC_INSTALL_DIR}) set_target_properties(ukui-notification PROPERTIES VERSION ${UKUI_NOTIFICATION_VERSION} SOVERSION ${VERSION_MAJOR} OUTPUT_NAME ukui-notification ) install(TARGETS ukui-notification EXPORT ukui-notification PUBLIC_HEADER DESTINATION ${HEADERS_INSTALL_DIR} LIBRARY DESTINATION /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE} ) install(EXPORT ukui-notification FILE ukui-notification-targets.cmake DESTINATION ${CMAKECONFIG_INSTALL_DIR}) install(FILES ${HEADERS} DESTINATION ${HEADERS_INSTALL_DIR}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ukui-notification.pc DESTINATION ${PC_INSTALL_DIR}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ukui-notification-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/ukui-notification-config-version.cmake DESTINATION ${CMAKECONFIG_INSTALL_DIR})