123 lines
4.0 KiB
CMake
123 lines
4.0 KiB
CMake
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 $<TARGET_FILE_DIR:DoseCompare>/algo
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
${CMAKE_SOURCE_DIR}/algo/calcDVHLibrary.dll
|
|
$<TARGET_FILE_DIR:DoseCompare>/algo/calcDVHLibrary.dll
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
${CMAKE_SOURCE_DIR}/algo/calcDVHLibraryD.dll
|
|
$<TARGET_FILE_DIR:DoseCompare>/algo/calcDVHLibraryD.dll
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
${CMAKE_SOURCE_DIR}/algo/GammaMapLib.dll
|
|
$<TARGET_FILE_DIR:DoseCompare>/algo/GammaMapLib.dll
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
${CMAKE_SOURCE_DIR}/algo/param.json
|
|
$<TARGET_FILE_DIR:DoseCompare>/algo/param.json
|
|
)
|