127 lines
3.8 KiB
CMake
127 lines
3.8 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
|
|
project(rewrite_qt VERSION 1.0.0 LANGUAGES CXX)
|
|
|
|
set(REWRITE_QT_DISPLAY_NAME "人脸识别考勤系统")
|
|
set(QT_QML_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/qml")
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTOMOC_COMPILER_PREDEFINES OFF)
|
|
set(CMAKE_AUTORCC ON)
|
|
|
|
file(TO_CMAKE_PATH "$ENV{LOCALAPPDATA}" REWRITE_QT_LOCALAPPDATA)
|
|
if(REWRITE_QT_LOCALAPPDATA)
|
|
set(REWRITE_QT_AUTOGEN_DIR "${REWRITE_QT_LOCALAPPDATA}/rewrite_qt_autogen")
|
|
else()
|
|
set(REWRITE_QT_AUTOGEN_DIR "${CMAKE_BINARY_DIR}/autogen_ascii")
|
|
endif()
|
|
file(MAKE_DIRECTORY "${REWRITE_QT_AUTOGEN_DIR}")
|
|
|
|
find_package(Qt6 6.2 REQUIRED COMPONENTS Core Gui Qml Quick QuickControls2 Network)
|
|
|
|
qt_standard_project_setup()
|
|
|
|
set(REWRITE_QT_APP_ICON "${CMAKE_CURRENT_SOURCE_DIR}/assets/favicon.ico")
|
|
set(REWRITE_QT_ICON_RESOURCES
|
|
assets/favicon.ico
|
|
assets/favicon-256x256.png
|
|
assets/favicon-192x192.png
|
|
assets/favicon-128x128.png
|
|
assets/favicon-64x64.png
|
|
assets/favicon-48x48.png
|
|
assets/favicon-32x32.png
|
|
assets/favicon-16x16.png
|
|
)
|
|
|
|
qt_add_executable(apprewrite_qt
|
|
main.cpp
|
|
src/AppController.cpp
|
|
src/ApiClient.cpp
|
|
src/CryptoUtils.cpp
|
|
src/RecordListModel.cpp
|
|
src/StatisticsListModel.cpp
|
|
src/TimeSlotListModel.cpp
|
|
src/MappingListModel.cpp
|
|
src/FaceListModel.cpp
|
|
)
|
|
|
|
if(WIN32 AND EXISTS "${REWRITE_QT_APP_ICON}")
|
|
set(REWRITE_QT_WIN32_ICON_RC "${CMAKE_CURRENT_BINARY_DIR}/app_icon.rc")
|
|
configure_file(cmake/app_icon.rc.in "${REWRITE_QT_WIN32_ICON_RC}" @ONLY)
|
|
target_sources(apprewrite_qt PRIVATE "${REWRITE_QT_WIN32_ICON_RC}")
|
|
endif()
|
|
|
|
if(ANDROID)
|
|
set_target_properties(apprewrite_qt PROPERTIES
|
|
QT_ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android"
|
|
QT_ANDROID_APP_NAME "${REWRITE_QT_DISPLAY_NAME}"
|
|
QT_ANDROID_APP_ICON "@mipmap/ic_launcher"
|
|
)
|
|
endif()
|
|
|
|
target_include_directories(apprewrite_qt PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
|
)
|
|
|
|
set(REWRITE_QT_RESOURCE_FILES
|
|
qml/Main.qml
|
|
)
|
|
|
|
foreach(REWRITE_QT_ICON_RESOURCE IN LISTS REWRITE_QT_ICON_RESOURCES)
|
|
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${REWRITE_QT_ICON_RESOURCE}")
|
|
list(APPEND REWRITE_QT_RESOURCE_FILES "${REWRITE_QT_ICON_RESOURCE}")
|
|
endif()
|
|
endforeach()
|
|
|
|
qt_add_resources(apprewrite_qt "qml_resources"
|
|
PREFIX "/"
|
|
FILES
|
|
${REWRITE_QT_RESOURCE_FILES}
|
|
)
|
|
|
|
target_link_libraries(apprewrite_qt
|
|
PRIVATE
|
|
Qt6::Core
|
|
Qt6::Gui
|
|
Qt6::Qml
|
|
Qt6::Quick
|
|
Qt6::QuickControls2
|
|
Qt6::Network
|
|
)
|
|
|
|
set_target_properties(apprewrite_qt PROPERTIES
|
|
AUTOGEN_BUILD_DIR "${REWRITE_QT_AUTOGEN_DIR}"
|
|
QT_QML_MODULE_NO_IMPORT_SCAN TRUE
|
|
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)
|
|
|
|
if(UNIX AND NOT APPLE AND NOT ANDROID)
|
|
set(REWRITE_QT_DESKTOP_FILE "${CMAKE_CURRENT_BINARY_DIR}/rewrite_qt.desktop")
|
|
configure_file(cmake/rewrite_qt.desktop.in "${REWRITE_QT_DESKTOP_FILE}" @ONLY)
|
|
install(FILES "${REWRITE_QT_DESKTOP_FILE}"
|
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications"
|
|
)
|
|
|
|
foreach(REWRITE_QT_ICON_SIZE IN ITEMS 16 32 48 64 128 192 256)
|
|
set(REWRITE_QT_LINUX_ICON "${CMAKE_CURRENT_SOURCE_DIR}/assets/favicon-${REWRITE_QT_ICON_SIZE}x${REWRITE_QT_ICON_SIZE}.png")
|
|
if(EXISTS "${REWRITE_QT_LINUX_ICON}")
|
|
install(FILES "${REWRITE_QT_LINUX_ICON}"
|
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${REWRITE_QT_ICON_SIZE}x${REWRITE_QT_ICON_SIZE}/apps"
|
|
RENAME rewrite_qt.png
|
|
)
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
|
|
install(TARGETS apprewrite_qt
|
|
BUNDLE DESTINATION .
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
)
|