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() if(NOT DEFINED JSONCPP_DIR AND EXISTS "C:/Toolkits/jsoncpp/lib/cmake/jsoncpp") set(JSONCPP_DIR "C:/Toolkits/jsoncpp/lib/cmake/jsoncpp" 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}) find_package(jsoncpp REQUIRED) if("${VTK_QT_VERSION}" STREQUAL "") message(FATAL_ERROR "VTK was not built with Qt support") endif() set(SOURCES src/main.cpp src/AppShell.cpp src/LauncherHomeWidget.cpp src/ProfileComparePage.cpp src/DoseImage.cpp src/ImageManager.cpp src/SliceViewWidget.cpp src/ProfilePlotWidget.cpp src/ImageListPanel.cpp src/dvh/DvhComparePage.cpp src/dvh/DvhCenterPart_ui.cpp src/dvh/DvhCenterPart_slot.cpp src/dvh/dcmIO.cpp src/gamma/GammaComparePage.cpp src/gamma/RoiLoader.cpp src/gamma/HotLegendWidget.cpp resources/resources.qrc ) set(HEADERS src/types.h src/AppShell.h src/LauncherHomeWidget.h src/ProfileComparePage.h src/DoseImage.h src/ImageManager.h src/SliceViewWidget.h src/ProfilePlotWidget.h src/ImageListPanel.h src/dvh/DvhComparePage.h src/dvh/DvhCenterPart.h src/dvh/dvhTypes.h src/dvh/dcmIO.h src/gamma/GammaComparePage.h src/gamma/RoiLoader.h src/gamma/HotLegendWidget.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 ${CMAKE_CURRENT_SOURCE_DIR}/src/dvh ${CMAKE_CURRENT_SOURCE_DIR}/src/gamma ) get_target_property(JSON_INC_PATH jsoncpp_lib INTERFACE_INCLUDE_DIRECTORIES) if(JSON_INC_PATH) target_include_directories(DoseCompare PRIVATE ${JSON_INC_PATH}) endif() target_link_libraries(DoseCompare PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets ${ITK_LIBRARIES} ${VTK_LIBRARIES} jsoncpp_lib ) 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 NOMINMAX WIN32_LEAN_AND_MEAN) target_compile_options(smoke_slice_test PRIVATE /utf-8 /W3 /EHsc) target_compile_definitions(smoke_slice_test PRIVATE _CRT_SECURE_NO_WARNINGS) endif() # Runtime algo DLL next to the executable add_custom_command(TARGET DoseCompare POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory $/algo COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/algo/calcDVHLibrary.dll $/algo/calcDVHLibrary.dll COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/algo/calcDVHLibraryD.dll $/algo/calcDVHLibraryD.dll COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/algo/GammaMapLib.dll $/algo/GammaMapLib.dll COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/algo/param.json $/algo/param.json )