-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathCMakeLists.txt
136 lines (111 loc) · 3.87 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
cmake_minimum_required(VERSION 3.21)
project(tail-tray VERSION 0.2.10 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_COMPILE_COMMANDS ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Use Davfs or not
option(DAVFS_ENABLED "Enable DAVFS" ON)
if (DAVFS_ENABLED)
message("DAVFS Has been enabled!")
add_definitions(-DDAVFS_ENABLED)
endif (DAVFS_ENABLED)
if (WIN32)
add_definitions(-DWINDOWS_BUILD)
endif (WIN32)
get_filename_component(FULL_LIBDIR_PATH
"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/tail-tray" ABSOLUTE)
add_definitions(-DTRANSLATIONS_DIR="${FULL_LIBDIR_PATH}")
message(STATUS "Full path of translations install path: ${FULL_LIBDIR_PATH}")
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Network)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Network)
# Translations
find_package(Qt6 REQUIRED COMPONENTS LinguistTools)
set(PROJECT_SOURCES
src/main.cpp
src/MainWindow.cpp
src/MainWindow.h
src/MainWindow.ui
resources.qrc
src/models/TailAccountInfo.h
src/models/TailDeviceInfo.h
src/models/TailUser.h
src/models/TailNetInfo.h
src/models/TailDriveInfo.h
src/models/TailStatus.h
src/models/TailState.h
src/models/JsonHelpers.h
src/models/Models.h
src/TrayMenuManager.cpp
src/TrayMenuManager.h
src/TailSettings.cpp
src/TailSettings.h
src/AccountsTabUiManager.cpp
src/AccountsTabUiManager.h
src/SysCommand.cpp
src/SysCommand.h
src/KnownValues.h
src/TailFileReceiver.cpp
src/TailFileReceiver.h
src/TailRunner.h
src/TailRunner.cpp
src/ManageDriveWindow.h
src/ManageDriveWindow.cpp
src/ManageDriveWindow.ui
src/NetworkStateMonitor.cpp
src/NetworkStateMonitor.h
)
if (APPLE)
set(MACOSX_BUNDLE_ICON_FILE tailscale.icns)
# And the following tells CMake where to find and install the file itself.
set(app_icon_macos "${CMAKE_CURRENT_SOURCE_DIR}/icons/tailscale.icns")
set_source_files_properties(${app_icon_macos} PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources")
qt_add_executable(tail-tray
MACOSX_BUNDLE ${app_icon_macos}
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
set_target_properties(tail-tray PROPERTIES
${BUNDLE_ID_OPTION}
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE)
else ()
qt_add_executable(tail-tray
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
endif ()
qt_add_translations(tail-tray TS_FILES
translations/tail_tray_en_US.ts
translations/tail_tray_sv_SE.ts
translations/tail_tray_de_DE.ts
translations/tail_tray_fr_FR.ts
)
qt_standard_project_setup(I18N_TRANSLATED_LANGUAGES en_US sv_SE de_DE fr_FR)
target_link_libraries(tail-tray PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network)
if (UNIX AND NOT APPLE)
include(GNUInstallDirs)
endif ()
install(TARGETS tail-tray
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
if (UNIX AND NOT APPLE)
install(FILES tail-tray.desktop
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications
)
install(FILES "${CMAKE_BINARY_DIR}/tail_tray_en_US.qm"
"${CMAKE_BINARY_DIR}/tail_tray_sv_SE.qm"
"${CMAKE_BINARY_DIR}/tail_tray_fr_FR.qm"
"${CMAKE_BINARY_DIR}/tail_tray_de_DE.qm"
DESTINATION "${FULL_LIBDIR_PATH}")
install(FILES icons/tailscale.png
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps
)
endif ()
qt_finalize_executable(tail-tray)