130 lines
3.9 KiB
CMake
130 lines
3.9 KiB
CMake
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
|
||
) |