cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) # metadata set(META_PROJECT_TYPE application) set(META_APP_NAME "Syncthing Tray") set(META_APP_ACTIONS OPEN_WEBUI) set(META_APP_ACTION_OPEN_WEBUI "open-webui" "Open web UI" "--webui") # add project files set(WIDGETS_HEADER_FILES application/singleinstance.h gui/trayicon.h gui/traywidget.h gui/traymenu.h gui/dirbuttonsitemdelegate.h gui/devbuttonsitemdelegate.h gui/downloaditemdelegate.h gui/dirview.h gui/devview.h gui/downloadview.h gui/helper.h) set(WIDGETS_SRC_FILES application/main.cpp application/singleinstance.cpp gui/trayicon.cpp gui/traywidget.cpp gui/traymenu.cpp gui/dirbuttonsitemdelegate.cpp gui/devbuttonsitemdelegate.cpp gui/downloaditemdelegate.cpp gui/dirview.cpp gui/devview.cpp gui/downloadview.cpp gui/helper.cpp) set(RES_FILES resources/${META_PROJECT_NAME}icons.qrc) set(WIDGETS_UI_FILES gui/traywidget.ui) set(TS_FILES translations/${META_PROJECT_NAME}_cs_CZ.ts translations/${META_PROJECT_NAME}_de_DE.ts translations/${META_PROJECT_NAME}_en_US.ts) set(ICON_FILES resources/icons/hicolor/scalable/apps/${META_PROJECT_NAME}.svg) set(DOC_FILES README.md) # declare required icons; used when bundling icon themes # note: Icons required by libraries the tray application depends on need to be specified as well. set(REQUIRED_ICONS color-profile dialog-cancel dialog-ok dialog-ok-apply document-open document-open-recent-symbolic edit-copy edit-clear edit-cut edit-delete edit-paste edit-redo edit-undo emblem-checked emblem-error emblem-remove folder folder-download folder-open folder-sync globe go-down go-up help-about internet-web-browser list-add list-remove media-playback-pause media-playback-start network-connect network-disconnect network-server preferences-desktop preferences-desktop-icons preferences-desktop-locale preferences-desktop-notification preferences-system-startup preferences-system-startup preferences-system-services preferences-other process-stop qtcreator system-run system-search system-file-manager text-plain user-home view-barcode view-refresh window-close) # find c++utilities find_package(c++utilities${CONFIGURATION_PACKAGE_SUFFIX} 5.6.0 REQUIRED) use_cpp_utilities() # find qtutilities find_package(qtutilities${CONFIGURATION_PACKAGE_SUFFIX_QTUTILITIES} 6.4.0 REQUIRED) use_qt_utilities() # find backend libraries find_package(syncthingconnector ${META_APP_VERSION} REQUIRED) use_syncthingconnector() find_package(syncthingmodel ${META_APP_VERSION} REQUIRED) use_syncthingmodel() find_package(syncthingwidgets ${META_APP_VERSION} REQUIRED) use_syncthingwidgets() # link also explicitely against the following Qt modules list(APPEND ADDITIONAL_QT_MODULES Network) # apply basic configuration include(BasicConfig) # add an option to unify left- and right-click context menus useful on Mac OS if (APPLE) set(UNIFY_TRAY_MENUS_BY_DEFAULT ON) else () set(UNIFY_TRAY_MENUS_BY_DEFAULT OFF) endif () option(UNIFY_TRAY_MENUS "unifies the left- and right-click tray menus" ${UNIFY_TRAY_MENUS_BY_DEFAULT}) if (UNIFY_TRAY_MENUS) list(APPEND META_PUBLIC_COMPILE_DEFINITIONS ${META_PROJECT_VARNAME_UPPER}_UNIFY_TRAY_MENUS) message(STATUS "left- and right-click context menus will be unified") endif () # include modules to apply configuration include(QtGuiConfig) include(QtConfig) include(WindowsResources) include(AppTarget) include(ShellCompletion) include(Doxygen) include(ConfigHeader) # create desktop file using previously defined meta data add_desktop_file() if (APPLE) set_target_properties(${META_TARGET_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/resources/Info.plist.in") endif ()