@@ -33,67 +33,63 @@ option(BUILD_EXAMPLE "Build example app" ${TRAY_IS_TOP_LEVEL})
3333set (CMAKE_COLOR_MAKEFILE ON )
3434set (CMAKE_EXPORT_COMPILE_COMMANDS ON )
3535
36- find_package (PkgConfig )
37-
3836file (GLOB TRAY_SOURCES
3937 "${CMAKE_CURRENT_SOURCE_DIR } /src/*.h"
4038)
4139
42- set (TRAY_ICON_ICO "${CMAKE_CURRENT_SOURCE_DIR } /icons/icon.ico" )
43- set (TRAY_ICON_PNG "${CMAKE_CURRENT_SOURCE_DIR } /icons/icon.png" )
44- set (TRAY_ICON_SVG "${CMAKE_CURRENT_SOURCE_DIR } /icons/icon.svg" )
45- set (TRAY_ICON_FILES
46- "${TRAY_ICON_ICO} "
47- "${TRAY_ICON_PNG} "
48- "${TRAY_ICON_SVG} "
49- )
50-
51- set (_TRAY_ICON_ICO "${TRAY_ICON_ICO} " CACHE INTERNAL "Default tray ICO icon path" )
52- set (_TRAY_ICON_PNG "${TRAY_ICON_PNG} " CACHE INTERNAL "Default tray PNG icon path" )
53- set (_TRAY_ICON_SVG "${TRAY_ICON_SVG} " CACHE INTERNAL "Default tray SVG icon path" )
54-
55- # Copy default tray icon files into the output directory of the specified target.
56- function (tray_copy_default_icons target_name )
57- if (NOT TARGET "${target_name} " )
58- message (FATAL_ERROR "tray_copy_default_icons expected an existing target: ${target_name} " )
59- endif ()
40+ if (TRAY_IS_TOP_LEVEL)
41+ set (TRAY_ICON_ICO "${CMAKE_CURRENT_SOURCE_DIR } /icons/icon.ico" )
42+ set (TRAY_ICON_PNG "${CMAKE_CURRENT_SOURCE_DIR } /icons/icon.png" )
43+ set (TRAY_ICON_SVG "${CMAKE_CURRENT_SOURCE_DIR } /icons/icon.svg" )
44+ set (TRAY_ICON2_ICO "${CMAKE_CURRENT_SOURCE_DIR } /icons/icon2.ico" )
45+ set (TRAY_ICON2_PNG "${CMAKE_CURRENT_SOURCE_DIR } /icons/icon2.png" )
46+ set (TRAY_ICON2_SVG "${CMAKE_CURRENT_SOURCE_DIR } /icons/icon2.svg" )
47+ set (TRAY_ICON_FILES
48+ "${TRAY_ICON_ICO} "
49+ "${TRAY_ICON_PNG} "
50+ "${TRAY_ICON_SVG} "
51+ "${TRAY_ICON2_ICO} "
52+ "${TRAY_ICON2_PNG} "
53+ "${TRAY_ICON2_SVG} "
54+ )
55+
56+ set (_TRAY_ICON_ICO "${TRAY_ICON_ICO} " CACHE INTERNAL "Default tray ICO icon path" )
57+ set (_TRAY_ICON_PNG "${TRAY_ICON_PNG} " CACHE INTERNAL "Default tray PNG icon path" )
58+ set (_TRAY_ICON_SVG "${TRAY_ICON_SVG} " CACHE INTERNAL "Default tray SVG icon path" )
59+
60+ # Copy default tray icon files into the output directory of the specified target.
61+ function (tray_copy_default_icons target_name )
62+ if (NOT TARGET "${target_name} " )
63+ message (FATAL_ERROR "tray_copy_default_icons expected an existing target: ${target_name} " )
64+ endif ()
6065
61- foreach (icon_file IN LISTS TRAY_ICON_FILES)
62- add_custom_command (TARGET "${target_name} " POST_BUILD
63- COMMAND ${CMAKE_COMMAND } -E copy_if_different
64- "${icon_file} "
65- "$<TARGET_FILE_DIR :${target_name} >"
66- COMMENT "Copying ${icon_file} to $<TARGET_FILE_DIR :${target_name} >" )
67- endforeach ()
68- endfunction ()
66+ foreach (icon_file IN LISTS TRAY_ICON_FILES)
67+ add_custom_command (TARGET "${target_name} " POST_BUILD
68+ COMMAND ${CMAKE_COMMAND } -E copy_if_different
69+ "${icon_file} "
70+ "$<TARGET_FILE_DIR :${target_name} >"
71+ COMMENT "Copying ${icon_file} to $<TARGET_FILE_DIR :${target_name} >" )
72+ endforeach ()
73+ endfunction ()
74+ endif ()
6975
70- if (WIN32 )
71- list (APPEND TRAY_SOURCES "${CMAKE_CURRENT_SOURCE_DIR } /src/tray_windows.c" )
76+ find_package (Qt6 COMPONENTS Widgets Svg )
77+ if (Qt6_FOUND)
78+ set (TRAY_QT_VERSION 6)
7279else ()
73- if (UNIX )
74- if (APPLE )
75- find_library (COCOA Cocoa REQUIRED )
76- list (APPEND TRAY_SOURCES "${CMAKE_CURRENT_SOURCE_DIR } /src/tray_darwin.m" )
77- else ()
78- find_package (LibNotify REQUIRED )
79- find_package (Qt6 COMPONENTS Widgets Svg )
80- if (Qt6_FOUND)
81- set (TRAY_QT_VERSION 6)
82- else ()
83- find_package (Qt5 REQUIRED COMPONENTS Widgets Svg )
84- set (TRAY_QT_VERSION 5)
85- endif ()
86- set (TRAY_QT_VERSION # cmake-lint: disable=C0103
87- "${TRAY_QT_VERSION} "
88- CACHE INTERNAL "Qt major version selected by tray"
89- )
90- set (CMAKE_AUTOMOC ON )
91- list (APPEND TRAY_SOURCES
92- "${CMAKE_CURRENT_SOURCE_DIR } /src/tray_linux.cpp"
93- "${CMAKE_CURRENT_SOURCE_DIR } /src/QtTrayMenu.cpp"
94- )
95- endif ()
96- endif ()
80+ find_package (Qt5 REQUIRED COMPONENTS Widgets Svg )
81+ set (TRAY_QT_VERSION 5)
82+ endif ()
83+ set (CMAKE_AUTOMOC ON )
84+ list (APPEND TRAY_SOURCES
85+ "${CMAKE_CURRENT_SOURCE_DIR } /src/tray_qt.cpp"
86+ "${CMAKE_CURRENT_SOURCE_DIR } /src/QtTrayMenu.cpp"
87+ )
88+ if (WIN32 )
89+ list (APPEND TRAY_SOURCES
90+ "${CMAKE_CURRENT_SOURCE_DIR } /src/WindowsAppearance.cpp"
91+ "${CMAKE_CURRENT_SOURCE_DIR } /src/WindowsAppearance.h"
92+ )
9793endif ()
9894
9995add_library (${PROJECT_NAME } STATIC ${TRAY_SOURCES} )
@@ -104,32 +100,26 @@ target_include_directories(${PROJECT_NAME}
104100 $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /src >
105101 $<INSTALL_INTERFACE :include >)
106102
107- if (WIN32 )
108- if (MSVC )
109- list (APPEND TRAY_COMPILE_OPTIONS "/MT$<$<CONFIG :Debug >:d >" )
110- endif ()
103+ if (WIN32 AND MSVC )
104+ list (APPEND TRAY_COMPILE_OPTIONS "/MT$<$<CONFIG :Debug >:d >" )
105+ endif ()
106+
107+ if (TRAY_QT_VERSION EQUAL 6)
108+ list (APPEND TRAY_EXTERNAL_LIBRARIES Qt6::Widgets Qt6::Svg)
111109else ()
112- if (UNIX )
113- if (APPLE )
114- list (APPEND TRAY_EXTERNAL_LIBRARIES ${COCOA} )
115- else ()
116- if (TRAY_QT_VERSION EQUAL 6)
117- list (APPEND TRAY_EXTERNAL_LIBRARIES Qt6::Widgets Qt6::Svg)
118- else ()
119- list (APPEND TRAY_EXTERNAL_LIBRARIES Qt5::Widgets Qt5::Svg)
120- endif ()
121- list (APPEND TRAY_LIBNOTIFY=1)
122- list (APPEND TRAY_EXTERNAL_LIBRARIES ${LIBNOTIFY_LIBRARIES} )
123-
124- include_directories (SYSTEM ${LIBNOTIFY_INCLUDE_DIRS} )
125- link_directories (${LIBNOTIFY_LIBRARY_DIRS} )
126- endif ()
127- endif ()
110+ list (APPEND TRAY_EXTERNAL_LIBRARIES Qt5::Widgets Qt5::Svg)
111+ endif ()
112+ if (WIN32 )
113+ list (APPEND TRAY_EXTERNAL_LIBRARIES advapi32 Wtsapi32)
114+ endif ()
115+
116+ if (TRAY_COMPILE_DEFINITIONS)
117+ target_compile_definitions (${PROJECT_NAME } PRIVATE ${TRAY_COMPILE_DEFINITIONS} )
128118endif ()
129119
130120add_library (tray::tray ALIAS ${PROJECT_NAME } )
131121
132- if (BUILD_EXAMPLE)
122+ if (TRAY_IS_TOP_LEVEL AND BUILD_EXAMPLE)
133123 add_executable (tray_example "${CMAKE_CURRENT_SOURCE_DIR } /src/example.c" )
134124 target_link_libraries (tray_example tray::tray )
135125 tray_copy_default_icons (tray_example )
@@ -142,7 +132,6 @@ if(TRAY_IS_TOP_LEVEL)
142132endif ()
143133
144134target_compile_options (${PROJECT_NAME } PRIVATE ${TRAY_COMPILE_OPTIONS} )
145- target_link_directories (${PROJECT_NAME } PRIVATE ${TRAY_EXTERNAL_DIRECTORIES} )
146135target_link_libraries (${PROJECT_NAME } PRIVATE ${TRAY_EXTERNAL_LIBRARIES} )
147136
148137#
0 commit comments