﻿cmake_minimum_required(VERSION 3.16)
project(DRAWer_2_0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# PlaneGCS PART
set(PlaneGCS_project_name "PlaneGCS")
set(INCLUDE_BOOST_DIR "C:/local/boost_1_89_0")
set(INCLUDE_EIGEN_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/eigen)

add_library(${PlaneGCS_project_name} STATIC
    GCS/GCS.cpp
    GCS/SubSystem.cpp
    GCS/Constraints.cpp
    GCS/Geo.cpp
    GCS/qp_eq.cpp
)

target_include_directories(${PlaneGCS_project_name} PUBLIC
    ${INCLUDE_BOOST_DIR}
    ${INCLUDE_EIGEN_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}/GCS/headers
)
target_link_libraries(${PlaneGCS_project_name}
PUBLIC
    Qt::Gui
)
target_compile_features(${PlaneGCS_project_name} PUBLIC cxx_std_20)

# DRAWer 2_0
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Gui Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets)

qt_standard_project_setup()

qt_add_executable(${PROJECT_NAME}
    src/main.cpp
    src/DRAWer_2_0.cpp
    src/Canvas.cpp
    include/DRAWer_2_0.h
    include/Canvas.h
    forms/DRAWer_2_0.ui
)

# Добавляем путь к src/ для поиска .ui файла (обходит AutoUic ошибку)
set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY AUTOUIC_SEARCH_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/forms)

target_include_directories(${PROJECT_NAME} PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/include
    ${CMAKE_CURRENT_SOURCE_DIR}/GCS
    ${CMAKE_CURRENT_BINARY_DIR}
)

set_target_properties(${PROJECT_NAME} PROPERTIES
    WIN32_EXECUTABLE TRUE
)

target_link_libraries(${PROJECT_NAME}
    PRIVATE
        Qt${QT_VERSION_MAJOR}::Core
        Qt${QT_VERSION_MAJOR}::Gui
        Qt${QT_VERSION_MAJOR}::Widgets
        ${PlaneGCS_project_name}
)