DoseCompare/CMakeLists.txt

100 lines
3.1 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()
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/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/DvhPlotWidget.cpp
src/dvh/dcmIO.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/DvhPlotWidget.h
src/dvh/dvhTypes.h
src/dvh/dcmIO.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
)
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 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
)