Initial QT project upload
This commit is contained in:
+146
@@ -0,0 +1,146 @@
|
||||
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(REWRITE_QT_OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/dist")
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${REWRITE_QT_OUTPUT_DIR}")
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${REWRITE_QT_OUTPUT_DIR}")
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${REWRITE_QT_OUTPUT_DIR}")
|
||||
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)
|
||||
|
||||
get_target_property(REWRITE_QT_QMAKE_EXECUTABLE Qt6::qmake IMPORTED_LOCATION)
|
||||
if(REWRITE_QT_QMAKE_EXECUTABLE)
|
||||
execute_process(
|
||||
COMMAND "${REWRITE_QT_QMAKE_EXECUTABLE}" -query QT_INSTALL_QML
|
||||
OUTPUT_VARIABLE REWRITE_QT_INSTALL_QML
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
endif()
|
||||
|
||||
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/StudentProfileListModel.cpp
|
||||
src/MappingListModel.cpp
|
||||
src/FaceListModel.cpp
|
||||
)
|
||||
|
||||
if(REWRITE_QT_INSTALL_QML)
|
||||
target_compile_definitions(apprewrite_qt PRIVATE
|
||||
REWRITE_QT_INSTALL_QML="${REWRITE_QT_INSTALL_QML}"
|
||||
)
|
||||
endif()
|
||||
|
||||
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}
|
||||
)
|
||||
Reference in New Issue
Block a user