1
0
forked from BRT/arc
arc/CMakeLists.txt
2025-05-24 15:19:27 +07:00

130 lines
3.9 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

cmake_minimum_required(VERSION 3.16)
project(ARCDesktopProject LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
add_compile_definitions(QT_MESSAGELOGCONTEXT)
if (WIN32)
# Укажи путь к Qt6
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")
#vcpkg install tesseract:arm64-windows
set(Tesseract_DIR "C:/Users/User/.vcpkg-clion/vcpkg/installed/arm64-windows/share/tesseract")
find_package(Tesseract CONFIG REQUIRED)
elseif (APPLE)
# Укажи путь к Qt6
set(CMAKE_PREFIX_PATH "/opt/homebrew/opt/qt")
include_directories("/opt/homebrew/opt/tesseract/include")
link_directories("/opt/homebrew/opt/tesseract/lib")
endif ()
find_package(Qt6 REQUIRED COMPONENTS
Network
Widgets
Sql
Xml
)
set(FFMPEG_BASE_DIR "${CMAKE_SOURCE_DIR}/deps/ffmpeg")
# Определяем include/lib dirs в зависимости от ОС
if (WIN32)
set(FFMPEG_PLATFORM_DIR "${FFMPEG_BASE_DIR}/windows")
elseif (APPLE)
set(FFMPEG_PLATFORM_DIR "${FFMPEG_BASE_DIR}/macos")
endif ()
set(FFMPEG_INCLUDE_DIR "${FFMPEG_PLATFORM_DIR}/include")
set(FFMPEG_LIB_DIR "${FFMPEG_PLATFORM_DIR}/lib")
# Проверяем, что всё на месте
if (NOT EXISTS "${FFMPEG_INCLUDE_DIR}/libavcodec/avcodec.h")
message(FATAL_ERROR "FFmpeg headers not found in ${FFMPEG_INCLUDE_DIR}")
endif ()
if (NOT EXISTS "${FFMPEG_LIB_DIR}")
message(FATAL_ERROR "FFmpeg lib directory not found: ${FFMPEG_LIB_DIR}")
endif ()
# Добавляем include-путь и директорию линковки
include_directories(${FFMPEG_INCLUDE_DIR})
link_directories(${FFMPEG_LIB_DIR})
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"
)
add_executable(ARCDesktopProject
main.cpp
VideoReceiver.h
VideoReceiver.cpp
VideoWindow.h
VideoWindow.cpp
${VIEW_SOURCES}
${SERVICES_SOURCES}
${DB_SOURCES}
${MODELS_SOURCES}
${ANDROID_SOURCES}
)
if (WIN32)
target_link_libraries(ARCDesktopProject
Qt6::Widgets
Qt6::Xml
Qt6::Sql
Qt6::Network
Tesseract::libtesseract
avcodec
avutil
swscale
)
# Копирование изображений в директорию сборки
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/database/app_data.db" DESTINATION "${CMAKE_BINARY_DIR}")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/tutorials" DESTINATION "${CMAKE_BINARY_DIR}")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/rus.traineddata" DESTINATION "${CMAKE_BINARY_DIR}")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/config.ini" DESTINATION "${CMAKE_BINARY_DIR}")
elseif (APPLE)
target_link_libraries(ARCDesktopProject
Qt6::Widgets
Qt6::Sql
Qt6::Xml
Qt6::Network
tesseract
avcodec
avutil
swscale
)
endif ()
target_include_directories(ARCDesktopProject 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
)