-
-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathCMakeLists.txt
135 lines (113 loc) · 4.78 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.5)
project(MouseClick VERSION 0.1 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools)
set(QWINDOWKIT_ROOT "${CMAKE_SOURCE_DIR}/deps/qwindowkit")
set(QWindowKit_DIR "${QWINDOWKIT_ROOT}/lib/cmake/QWindowKit")
find_package(QWindowKit REQUIRED)
set(QHOTKEY_ROOT "${CMAKE_SOURCE_DIR}/deps/qhotkey")
set(QHotkey_DIR "${QHOTKEY_ROOT}/lib/cmake/QHotkey")
find_package(QHotkey REQUIRED)
set(QWK_WINDOWBAR_FILES
src/qwk_window_bar/windowbar.h src/qwk_window_bar/windowbar.cpp
src/qwk_window_bar/windowbutton.h src/qwk_window_bar/windowbutton.cpp
src/qwk_window_bar/private/windowbar_p.h
src/qwk_window_bar/private/windowbutton_p.h
)
set(TRANSLATIONS_FILES
i18n/MouseClick_zh_CN.ts
i18n/MouseClick_zh_TW.ts
i18n/MouseClick_en_US.ts
)
set(QRC_FILES assets/assets.qrc)
set(PROJECT_SOURCES
src/main.cpp
src/mainwindow.h src/mainwindow.cpp
src/modules/nav_pages/navpage.h src/modules/nav_pages/navpage.cpp
src/modules/nav_pages/mouseclickpage.h src/modules/nav_pages/mouseclickpage.cpp
src/modules/nav_pages/settingspage.h src/modules/nav_pages/settingspage.cpp
src/modules/settingsagent.h src/modules/settingsagent.cpp
src/modules/shared.h src/modules/shared.cpp
src/modules/hotkeylineedit.h src/modules/hotkeylineedit.cpp
src/modules/messagebox.h src/modules/messagebox.cpp
src/utils/clicker.h src/utils/clicker.cpp
${QWK_WINDOWBAR_FILES}
${TRANSLATIONS_FILES}
${QRC_FILES}
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(${PROJECT_NAME}
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
# Define target properties for Android with Qt 6 as:
# set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
# ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
# qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TRANSLATIONS_FILES})
qt_add_translations(${PROJECT_NAME} TS_FILES ${TRANSLATIONS_FILES})
else()
if(ANDROID)
add_library(${PROJECT_NAME} SHARED
${PROJECT_SOURCES}
)
# Define properties for Android with Qt 5 after find_package() calls as:
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
else()
add_executable(${PROJECT_NAME}
${PROJECT_SOURCES}
)
endif()
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TRANSLATIONS_FILES})
endif()
target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_include_directories(${PROJECT_NAME} PRIVATE "${QWINDOWKIT_ROOT}/include/QWindowKit::Widgets")
target_link_libraries(${PROJECT_NAME} PRIVATE QWindowKit::Widgets)
target_include_directories(${PROJECT_NAME} PRIVATE ${QHOTKEY_ROOT}/include)
target_link_libraries(${PROJECT_NAME} PRIVATE qhotkey)
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
if(${QT_VERSION} VERSION_LESS 6.1.0)
set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER cn.seayj.MouseClick)
endif()
set_target_properties(${PROJECT_NAME} PROPERTIES
${BUNDLE_ID_OPTION}
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
include(GNUInstallDirs)
install(TARGETS ${PROJECT_NAME}
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(${PROJECT_NAME})
endif()
# 构建打包环境 dist 目录
# 1. 复制 QWindowKit 的 dll 文件到构建目录
add_custom_command(
TARGET MouseClick
PRE_BUILD # 在构建之前执行
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${CMAKE_SOURCE_DIR}/deps/qwindowkit/bin"
"${CMAKE_BINARY_DIR}/dist"
COMMENT "Copy the dll files of QWindowKit to the build directory!"
)
# 2. 复制生成的可执行文件到 dist 目录
add_custom_command(
TARGET MouseClick
POST_BUILD # 在可执行文件生成之后执行
COMMAND ${CMAKE_COMMAND} -E copy
"$<TARGET_FILE:MouseClick>" # 目标文件,即生成的 MouseClick.exe
"${CMAKE_BINARY_DIR}/dist"
COMMENT "Copy the generated executable to the dist directory!"
)