144 lines
5.4 KiB
CMake
144 lines
5.4 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
|
|
project(ukui-menu LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
# see https://cmake.org/cmake/help/v3.16/manual/cmake-qt.7.html
|
|
set(CMAKE_AUTOUIC ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTORCC ON)
|
|
|
|
# 查找qt组件
|
|
find_package(Qt5 COMPONENTS
|
|
Core Gui Quick Widgets LinguistTools DBus X11Extras
|
|
REQUIRED)
|
|
|
|
# find kde framework components
|
|
# see: https://api.kde.org/frameworks/index.html > KWindowSystem
|
|
find_package(KF5WindowSystem REQUIRED)
|
|
|
|
# 查找其他组件
|
|
# see: https://cmake.org/cmake/help/v3.16/module/FindPkgConfig.html
|
|
# see: https://cmake.org/cmake/help/v3.16/command/list.html
|
|
find_package(PkgConfig REQUIRED)
|
|
|
|
set(UKUI_MENU_EXTERNAL_LIBS "")
|
|
# glib-2.0 gio-unix-2.0 gsettings-qt x11 kysdk-waylandhelper
|
|
set(UKUI_MENU_PC_PKGS glib-2.0 gio-unix-2.0 gsettings-qt x11 kysdk-waylandhelper ukui-search)
|
|
|
|
foreach(external_lib IN ITEMS ${UKUI_MENU_PC_PKGS})
|
|
pkg_check_modules(${external_lib} REQUIRED ${external_lib})
|
|
if(${${external_lib}_FOUND})
|
|
include_directories(${${external_lib}_INCLUDE_DIRS})
|
|
link_directories(${${external_lib}_LIBRARY_DIRS})
|
|
list(APPEND UKUI_MENU_EXTERNAL_LIBS ${${external_lib}_LIBRARIES})
|
|
endif()
|
|
endforeach()
|
|
|
|
message(STATUS "External libraries found: ${UKUI_MENU_EXTERNAL_LIBS}")
|
|
|
|
# include single-application
|
|
add_subdirectory(3rd-parties/SingleApplication)
|
|
# static lib of single-application.
|
|
set(SingleApplication "SingleApplication")
|
|
|
|
# include文件夹
|
|
include_directories(src)
|
|
include_directories(src/model)
|
|
include_directories(src/appdata)
|
|
include_directories(src/settings)
|
|
include_directories(src/uiconfig)
|
|
include_directories(src/windows)
|
|
|
|
# 用于Qt Creator识别自定义qml模块的导入路径
|
|
list(APPEND QML_MODULE_DIRS "${PROJECT_SOURCE_DIR}/qml")
|
|
set(QML_IMPORT_PATH "${QML_MODULE_DIRS}" CACHE STRING "Qt Creator extra qml import paths." FORCE)
|
|
message(STATUS "QML_IMPORT_PATH: ${QML_IMPORT_PATH}")
|
|
|
|
# 基础设置
|
|
set(UKUI_MENU_DATA_DIR "/usr/share/ukui-menu")
|
|
set(UKUI_MENU_TRANSLATION_DIR "${UKUI_MENU_DATA_DIR}/translations")
|
|
set(UKUI_MENU_EXTENSION_DIR "${UKUI_MENU_DATA_DIR}/extensions")
|
|
#set(UKUI_MENU_EXTENSION_IFACE_QML_DIR "/usr/lib/x86_64-linux-gnu/qt5/qml/org/ukui/menu/extension")
|
|
|
|
# 宏定义
|
|
add_compile_definitions(UKUI_MENU_TRANSLATION_DIR="${UKUI_MENU_TRANSLATION_DIR}"
|
|
UKUI_MENU_DATA_DIR="${UKUI_MENU_DATA_DIR}"
|
|
UKUI_MENU_EXTENSION_DIR="${UKUI_MENU_EXTENSION_DIR}"
|
|
)
|
|
|
|
# ukui-menu的源码
|
|
set(SOURCE_FILES
|
|
src/main.cpp
|
|
src/commons.h src/commons.cpp
|
|
src/menu-dbus-service.cpp src/menu-dbus-service.h
|
|
src/ukui-menu-application.cpp src/ukui-menu-application.h
|
|
src/model/model.cpp src/model/model.h
|
|
src/model/model-manager.cpp src/model/model-manager.h
|
|
src/settings/settings.cpp src/settings/settings.h
|
|
src/uiconfig/color-helper.cpp src/uiconfig/color-helper.h
|
|
src/uiconfig/theme-palette.cpp src/uiconfig/theme-palette.h
|
|
src/windows/menu-main-window.cpp src/windows/menu-main-window.h
|
|
src/appdata/data-provider-plugin-iface.h
|
|
src/appdata/app-data-manager.cpp src/appdata/app-data-manager.h
|
|
src/appdata/app-folder-helper.cpp src/appdata/app-folder-helper.h
|
|
src/appdata/app-icon-provider.cpp src/appdata/app-icon-provider.h
|
|
src/appdata/data-provider-manager.cpp src/appdata/data-provider-manager.h
|
|
src/appdata/plugin/all-app-data-provider.cpp src/appdata/plugin/all-app-data-provider.h
|
|
src/extension/menu-extension-iface.h
|
|
src/extension/menu-extension.cpp src/extension/menu-extension.h
|
|
src/extension/extensions/folder-extension.cpp src/extension/extensions/folder-extension.h
|
|
src/extension/extensions/recent-file-extension.cpp src/extension/extensions/recent-file-extension.h
|
|
)
|
|
|
|
# qrc文件
|
|
set(QRC_FILES qml/qml.qrc res/res.qrc)
|
|
# desktop file
|
|
set(DESKTOP_FILE data/ukui-menu.desktop)
|
|
set(GSETTING_FILE data/org.ukui.menu.settings.gschema.xml)
|
|
# data files
|
|
#set(DATA_FILES data/xxx)
|
|
# extension
|
|
#file(GLOB EXTENSION_IFACE_QML_FILES "qml/org/ukui/menu/extension/*")
|
|
|
|
# 翻译文件
|
|
file(GLOB TS_FILES "${PROJECT_SOURCE_DIR}/translations/*.ts")
|
|
# 更新翻译并创建.qm文件
|
|
qt5_create_translation(QM_FILES ${PROJECT_SOURCE_DIR} ${TS_FILES})
|
|
# see https://cmake.org/cmake/help/v3.16/command/add_custom_command.html
|
|
# add_custom_target(GEN_TS ALL DEPENDS ${TS_FILES})
|
|
# add_custom_target(generate_qm ALL DEPENDS ${QM_FILES})
|
|
|
|
add_executable(
|
|
${PROJECT_NAME}
|
|
${QRC_FILES}
|
|
${QM_FILES}
|
|
${SOURCE_FILES}
|
|
)
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
|
|
target_link_libraries(${PROJECT_NAME}
|
|
PRIVATE
|
|
Qt5::Core
|
|
Qt5::Gui
|
|
Qt5::Quick
|
|
Qt5::Widgets
|
|
Qt5::DBus
|
|
Qt5::X11Extras
|
|
KF5::WindowSystem
|
|
${SingleApplication}
|
|
${UKUI_MENU_EXTERNAL_LIBS}
|
|
)
|
|
|
|
# 安装ukui-menu
|
|
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION "/usr/bin")
|
|
# 安装翻译文件
|
|
install(FILES ${QM_FILES} DESTINATION "${UKUI_MENU_TRANSLATION_DIR}")
|
|
# 安装desktop文件
|
|
install(FILES ${DESKTOP_FILE} DESTINATION "/etc/xdg/autostart")
|
|
install(FILES ${GSETTING_FILE} DESTINATION "/usr/share/glib-2.0/schemas")
|
|
#install(FILES ${EXTENSION_IFACE_QML_FILES} DESTINATION "${UKUI_MENU_EXTENSION_IFACE_QML_DIR}")
|