cmake_minimum_required(VERSION 3.15)

project(tp LANGUAGES C CXX)

find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets)
add_subdirectory(external/OpenMesh)
add_subdirectory(external/Eigen)

add_subdirectory(external/MeshReconstruction)
target_include_directories(MeshReconstruction INTERFACE
  external/MeshReconstruction/lib)

add_executable(${PROJECT_NAME})
target_sources(${PROJECT_NAME} PRIVATE
  resources.qrc
  src/main.cpp
  src/main_window.cpp
  src/main_window.h
  src/mesh_processor.cpp
  src/mesh_processor.h
  src/mesh_view.cpp
  src/mesh_view.h
  src/mesh_viewer.cpp
  src/mesh_viewer.h
  src/my_mesh.h
  src/smoothing.cpp
  src/smoothing.h
  src/util.cpp
  src/util.h
  src/curvature.cpp
  src/curvature.h
  src/quad_patch.cpp
  src/quad_patch.h
  src/quad_patch_tesselator.cpp
  src/quad_patch_tesselator.h
  src/hole_filling.h
  src/hole_filling.cpp)
target_link_libraries(${PROJECT_NAME} PRIVATE
  Qt5::Core Qt5::Gui Qt5::Widgets
  OpenMeshCore
  eigen
  MeshReconstruction)
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
set_target_properties(${PROJECT_NAME} PROPERTIES
  AUTOMOC ON
  AUTORCC ON
  AUTOUIC ON)
