- Renamed project and executable from `ARCDesktopProject` to `ARC`, updating CMake files accordingly. - Introduced dynamic no-devices label with scaling and visibility handling. - Added tutorial display logic for first-time users with `SettingsDAO`. - Updated application name, window title, and icon for improved branding. - Removed unused endpoints from `config.ini`.
182 lines
6.6 KiB
CMake
182 lines
6.6 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
||
project(ARC LANGUAGES CXX)
|
||
|
||
#mkdir build
|
||
#cd build
|
||
#cmake .. -A x64 -DCMAKE_PREFIX_PATH="C:/Qt/6.9.0/msvc2022_64" -DCMAKE_BUILD_TYPE=Release
|
||
#cmake .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_PREFIX_PATH="C:/Qt/6.9.0/msvc2022_64" -DCMAKE_BUILD_TYPE=Release
|
||
#cmake --build . --config Release
|
||
#"C:\Qt\6.9.0\msvc2022_64\bin\windeployqt.exe" .\Release\ARC.exe
|
||
|
||
set(CMAKE_CXX_STANDARD 17)
|
||
set(CMAKE_AUTOMOC ON)
|
||
set(CMAKE_AUTORCC ON)
|
||
set(CMAKE_AUTOUIC ON)
|
||
|
||
add_compile_definitions(QT_MESSAGELOGCONTEXT)
|
||
|
||
if (WIN32)
|
||
# Определяем целевую архитектуру.
|
||
# CMAKE_GENERATOR_PLATFORM (-A flag) — самый надёжный способ определения при кросс-компиляции.
|
||
# На ARM64 хосте CMAKE_SYSTEM_PROCESSOR может быть "ARM64" даже при сборке под x64,
|
||
# поэтому сначала проверяем явные x64-признаки.
|
||
if (CMAKE_GENERATOR_PLATFORM STREQUAL "x64"
|
||
OR CMAKE_GENERATOR_PLATFORM STREQUAL "Win64"
|
||
OR VCPKG_TARGET_TRIPLET MATCHES "x64")
|
||
message(STATUS "Detected x64 target architecture")
|
||
set(CMAKE_PREFIX_PATH "C:/Qt/6.9.0/msvc2022_64")
|
||
list(APPEND CMAKE_PREFIX_PATH "C:/Users/User/.vcpkg-clion/vcpkg/installed/x64-windows")
|
||
set(Tesseract_DIR "C:/Users/User/.vcpkg-clion/vcpkg/installed/x64-windows/share/tesseract")
|
||
elseif (VCPKG_TARGET_TRIPLET MATCHES "arm64"
|
||
OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64"
|
||
OR CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64"
|
||
OR CMAKE_CXX_COMPILER MATCHES "arm64")
|
||
message(STATUS "Detected ARM64 target architecture")
|
||
set(CMAKE_PREFIX_PATH "C:/Qt/6.9.0/msvc2022_arm64")
|
||
list(APPEND CMAKE_PREFIX_PATH "C:/Users/User/.vcpkg-clion/vcpkg/installed/arm64-windows")
|
||
set(Tesseract_DIR "C:/Users/User/.vcpkg-clion/vcpkg/installed/arm64-windows/share/tesseract")
|
||
else ()
|
||
message(STATUS "Detected x64 target architecture (default)")
|
||
set(CMAKE_PREFIX_PATH "C:/Qt/6.9.0/msvc2022_64")
|
||
list(APPEND CMAKE_PREFIX_PATH "C:/Users/User/.vcpkg-clion/vcpkg/installed/x64-windows")
|
||
set(Tesseract_DIR "C:/Users/User/.vcpkg-clion/vcpkg/installed/x64-windows/share/tesseract")
|
||
endif ()
|
||
|
||
find_package(Tesseract CONFIG REQUIRED)
|
||
elseif (APPLE)
|
||
# Укажи путь к Qt6
|
||
set(CMAKE_PREFIX_PATH "/opt/homebrew/opt/qt")
|
||
include_directories("/opt/homebrew/include")
|
||
link_directories("/opt/homebrew/lib")
|
||
endif ()
|
||
|
||
find_package(Qt6 REQUIRED COMPONENTS
|
||
Network
|
||
Widgets
|
||
Sql
|
||
Xml
|
||
)
|
||
|
||
file(GLOB_RECURSE DB_SOURCES
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/database/*.cpp"
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/database/*.h"
|
||
)
|
||
|
||
file(GLOB_RECURSE VIEW_SOURCES
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/views/*.cpp"
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/views/*.h"
|
||
)
|
||
|
||
file(GLOB_RECURSE SERVICES_SOURCES
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/services/*.cpp"
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/services/*.h"
|
||
)
|
||
|
||
file(GLOB_RECURSE MODELS_SOURCES
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/models/*.cpp"
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/models/*.h"
|
||
)
|
||
|
||
file(GLOB_RECURSE ANDROID_SOURCES
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/android/*.cpp"
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/android/*.h"
|
||
)
|
||
|
||
if (WIN32)
|
||
add_executable(ARC WIN32
|
||
main.cpp
|
||
app.rc
|
||
${VIEW_SOURCES}
|
||
${SERVICES_SOURCES}
|
||
${DB_SOURCES}
|
||
${MODELS_SOURCES}
|
||
${ANDROID_SOURCES}
|
||
views/bank/BankSettingsWindow.cpp
|
||
views/bank/BankSettingsWindow.h
|
||
views/log/FileLogWindow.cpp
|
||
views/log/FileLogWindow.h
|
||
database/dao/GeneralLogDAO.cpp
|
||
database/dao/GeneralLogDAO.h
|
||
)
|
||
elseif (APPLE)
|
||
add_executable(ARC
|
||
main.cpp
|
||
${VIEW_SOURCES}
|
||
${SERVICES_SOURCES}
|
||
${DB_SOURCES}
|
||
${MODELS_SOURCES}
|
||
${ANDROID_SOURCES}
|
||
views/bank/BankSettingsWindow.cpp
|
||
views/bank/BankSettingsWindow.h
|
||
views/log/FileLogWindow.cpp
|
||
views/log/FileLogWindow.h
|
||
database/dao/GeneralLogDAO.cpp
|
||
database/dao/GeneralLogDAO.h
|
||
)
|
||
endif ()
|
||
|
||
if (WIN32)
|
||
target_link_libraries(ARC
|
||
Qt6::Widgets
|
||
Qt6::Xml
|
||
Qt6::Sql
|
||
Qt6::Network
|
||
Tesseract::libtesseract
|
||
)
|
||
|
||
# Копирование изображений в директорию сборки
|
||
# file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/database/app_data.db" DESTINATION "${CMAKE_BINARY_DIR}/database")
|
||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/tutorials" DESTINATION "${CMAKE_BINARY_DIR}")
|
||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/images" DESTINATION "${CMAKE_BINARY_DIR}")
|
||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/rus.traineddata" DESTINATION "${CMAKE_BINARY_DIR}")
|
||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/eng.traineddata" DESTINATION "${CMAKE_BINARY_DIR}")
|
||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/config.ini" DESTINATION "${CMAKE_BINARY_DIR}")
|
||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/tools/adb/windows" DESTINATION "${CMAKE_BINARY_DIR}/tools/adb")
|
||
|
||
add_custom_command(TARGET ARC POST_BUILD
|
||
COMMAND ${CMAKE_COMMAND} -E make_directory
|
||
"$<TARGET_FILE_DIR:ARC>/database"
|
||
|
||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/tutorials"
|
||
"$<TARGET_FILE_DIR:ARC>/tutorials"
|
||
|
||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/images"
|
||
"$<TARGET_FILE_DIR:ARC>/images"
|
||
|
||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/rus.traineddata"
|
||
"$<TARGET_FILE_DIR:ARC>/rus.traineddata"
|
||
|
||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/eng.traineddata"
|
||
"$<TARGET_FILE_DIR:ARC>/eng.traineddata"
|
||
|
||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/config.ini"
|
||
"$<TARGET_FILE_DIR:ARC>/config.ini"
|
||
|
||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/tools/adb/windows"
|
||
"$<TARGET_FILE_DIR:ARC>/tools/adb/windows"
|
||
)
|
||
|
||
elseif (APPLE)
|
||
target_link_libraries(ARC
|
||
Qt6::Widgets
|
||
Qt6::Sql
|
||
Qt6::Xml
|
||
Qt6::Network
|
||
tesseract
|
||
leptonica
|
||
)
|
||
endif ()
|
||
|
||
target_include_directories(ARC PRIVATE
|
||
${CMAKE_CURRENT_SOURCE_DIR}/views
|
||
${CMAKE_CURRENT_SOURCE_DIR}/database
|
||
${CMAKE_CURRENT_SOURCE_DIR}/services
|
||
${CMAKE_CURRENT_SOURCE_DIR}/models
|
||
${CMAKE_CURRENT_SOURCE_DIR}/android
|
||
) |