cmake_minimum_required(VERSION 2.8.11)


set(PROJECT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include)
set(VOXELLIB_INCLUDE_DIR ${VOXELSKELETONLIB_LIBRARY_PATH}/include)
message(VOXELLIB_INCLUDE_DIR: ${VOXELLIB_INCLUDE_DIR})

include_directories("${PROJECT_INCLUDE_DIR}")
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${VOXELSKELETONLIB_PROJECT_PATH}/include)
include_directories(${VOXELLIB_INCLUDE_DIR})

find_package(OpenGL REQUIRED)
include_directories(${OpenGL_INCLUDE_DIRS})
link_directories(${OpenGL_LIBRARY_DIRS})
add_definitions(${OpenGL_DEFINITIONS})

find_package(GLEW REQUIRED)
include_directories(${GLEW_INCLUDE_DIRS})
link_directories(${GLEW_LIBRARY_DIRS})
add_definitions(${GLEW_DEFINITIONS})

find_package(GLUT REQUIRED)
include_directories(${GLUT_INCLUDE_DIR})
link_directories(${GLUT_LIBRARY_DIRS})
add_definitions(${GLUT_DEFINITIONS})

find_package(ANN REQUIRED)
include_directories(${ANN_INCLUDE_DIR})

find_package(GLM REQUIRED)
include_directories(${GLM_INCLUDE_DIR})

find_package(Qt5Widgets REQUIRED)
find_package(Qt5Gui REQUIRED)
#include_directories(${Qt5Widgets_INCLUDE_DIRS})
#link_directories(${Qt5Widgets_LIBRARIES})


find_package(Boost COMPONENTS thread system chrono REQUIRED)
include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIRS})
add_definitions(${Boost_DEFINITIONS})


find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})

set(sources
  AddNoisePickHandler.cc
  Application.cc
  CutSetRenderer.cc
  GlutWindow.cc
  GraphRender.cc
  Helpers.cc
  main.cc
  MainWindow.cc
  MainWindow.ui
  memusage.c
  PointSetRenderer.cc
  SegmentationHandler.cc
  Shaders.cc
  ShowCorridorGraphHandler.cc
  ShowInfoHandler.cc
  SkeletonController.cc
  SkeletonPointRenderer.cc
  skelrender.cc
  Surfel.cc
  TaskScheduler.cc
  zpr.cc
  VolumeOpenController.cc
)

set(headers
  AddNoisePickHandler.h
  Application.h
  CutSetRenderer.h
  GlutWindow.h
  glwrapper.h
  GraphRender.h
  Helpers.h
  memusage.h
  PointSetRenderer.h
  SegmentationHandler.h
  Shaders.h
  ShowCorridorGraphHandler.h
  ShowInfoHandler.h
  SkeletonController.h
  SkeletonCreationOptions.h
  SkeletonPointRenderer.h
  skelrender.h
  Surfel.h
  TaskScheduler.h
  zpr.h
  VolumeOpenController.h
)

# Add header files so that QT Creator and visual studio work better
PREPEND(headers_full ${PROJECT_INCLUDE_DIR} ${headers})
# add_custom_target(${PROJECT_NAME} SOURCES "${headers_full}")

add_executable(VoxelSkeleton
  ${headers_full}
  ${sources}
)

SET(QT_FORMS MainWindow.ui)
QT5_WRAP_UI(ui_MainWindow.h ${QT_FORMS})

target_link_libraries(VoxelSkeleton
  VOXELSKELETONLIB
  Qt5::Widgets
  Qt5::Gui
  ${ANN_LIBRARIES}
  ${OPENGL_LIBRARIES}
  ${GLEW_LIBRARIES}
  ${GLUT_glut_LIBRARY}
  ${Boost_LIBRARIES}
)

# installing the resource files
install(TARGETS VoxelSkeleton
  DESTINATION VoxelSkeleton
)
