cmake_minimum_required(VERSION 3.10)
project(DoseCompare LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

# Defaults matching local Manteia Toolkits (tomoViewer)
if(NOT DEFINED Qt5_DIR AND EXISTS "D:/Qt/Qt5.9.4/5.9.4/msvc2017_64/lib/cmake/Qt5")
  set(Qt5_DIR "D:/Qt/Qt5.9.4/5.9.4/msvc2017_64/lib/cmake/Qt5" CACHE PATH "")
endif()
if(NOT DEFINED ITK_DIR AND EXISTS "C:/Toolkits/ITK/lib/cmake/ITK-4.13")
  set(ITK_DIR "C:/Toolkits/ITK/lib/cmake/ITK-4.13" CACHE PATH "")
endif()
if(NOT DEFINED VTK_DIR AND EXISTS "C:/Toolkits/VTK/lib/cmake/vtk-8.1")
  set(VTK_DIR "C:/Toolkits/VTK/lib/cmake/vtk-8.1" CACHE PATH "")
endif()

find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets)
find_package(ITK REQUIRED)
include(${ITK_USE_FILE})
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})

if("${VTK_QT_VERSION}" STREQUAL "")
  message(FATAL_ERROR "VTK was not built with Qt support")
endif()

set(SOURCES
  src/main.cpp
  src/MainWindow.cpp
  src/DoseImage.cpp
  src/ImageManager.cpp
  src/SliceViewWidget.cpp
  src/ProfilePlotWidget.cpp
  src/ImageListPanel.cpp
  resources/resources.qrc
)

set(HEADERS
  src/types.h
  src/MainWindow.h
  src/DoseImage.h
  src/ImageManager.h
  src/SliceViewWidget.h
  src/ProfilePlotWidget.h
  src/ImageListPanel.h
)

if(WIN32)
  set(APP_ICON_RC "${CMAKE_CURRENT_SOURCE_DIR}/resources/app.rc")
  set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} /I \"${CMAKE_CURRENT_SOURCE_DIR}/resources\"")
endif()

add_executable(DoseCompare ${SOURCES} ${HEADERS} ${APP_ICON_RC})
target_include_directories(DoseCompare PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_link_libraries(DoseCompare PRIVATE
  Qt5::Core Qt5::Gui Qt5::Widgets
  ${ITK_LIBRARIES}
  ${VTK_LIBRARIES}
)

add_executable(smoke_slice_test src/smoke_slice_test.cpp src/DoseImage.cpp)
target_include_directories(smoke_slice_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_link_libraries(smoke_slice_test PRIVATE Qt5::Core Qt5::Gui ${ITK_LIBRARIES})

if(MSVC)
  target_compile_options(DoseCompare PRIVATE /utf-8 /W3 /EHsc)
  target_compile_definitions(DoseCompare PRIVATE _CRT_SECURE_NO_WARNINGS)
  target_compile_options(smoke_slice_test PRIVATE /utf-8 /W3 /EHsc)
  target_compile_definitions(smoke_slice_test PRIVATE _CRT_SECURE_NO_WARNINGS)
endif()
