Set(BUILD_ITK FALSE CACHE BOOL "Check to build the ITK plugins")
If(BUILD_ITK)
  Find_Package(ITK)
  If(ITK_FOUND)
    Include_Directories(${MGX_BINARY_PATH} ${MGX_SOURCE_PATH})
    Include_Directories(SYSTEM ${MGXViewer_SOURCE_PATH})
    Include_Directories(${ITK_INCLUDE_DIRS})
    Set(CMAKE_AUTOUIC FALSE)  # Can't use autouic; we include a .ui from ../src
    Qt5_Wrap_UI(${MGX_SOURCE_PATH}/ImportStack.ui)

    Set(ITK_UTIL_HEADERS
      ITKConfig.hpp
      ITKProcess.hpp
      ITKProgress.hpp
      )
    Set(ITK_UTIL_SOURCES
      ITKProcess.cpp
      ITKProgress.cpp
      )
    Add_Library(mgxITKutil SHARED ${ITK_UTIL_SOURCES})
    Target_Link_Libraries(mgxITKutil MGXViewer mgx ${ITK_LIBRARIES} Qt5::Widgets)
    If(WIN32)
      Set_Target_Properties(mgxITKutil PROPERTIES
        DEFINE_SYMBOL mgxITKutil_EXPORTS)
      Install(TARGETS mgxITKutil
              RUNTIME DESTINATION bin COMPONENT MGXITK
              LIBRARY DESTINATION lib COMPONENT MGXITK
              ARCHIVE DESTINATION lib COMPONENT MGXITK)
    Else()
      Set_Target_Properties(mgxITKutil PROPERTIES
        PUBLIC_HEADER "${ITK_UTIL_HEADERS}"
        DEFINE_SYMBOL mgxITKutil_EXPORTS)
      Install(TARGETS mgxITKutil
              RUNTIME DESTINATION bin COMPONENT MGXITK
              LIBRARY DESTINATION lib COMPONENT MGXITK
              ARCHIVE DESTINATION lib COMPONENT MGXITK
              PUBLIC_HEADER DESTINATION "include/MorphoGraphX" COMPONENT MGXITK)
    EndIf()

    Set(ITK_HEADERS
      ITKConfig.hpp
      ITKFilter.hpp
      ITKSource.hpp
      ITKSink.hpp
      ITKSegmentation.hpp
      ITKRegistration.hpp
      EdgeDetectAngle.hpp
      )
    Set(ITK_SOURCES
      ITKFilter.cpp
      ITKSource.cpp
      ITKSink.cpp
      ITKSegmentation.cpp
      ITKRegistration.cpp
      EdgeDetectAngle.cpp
      )
    Mgx_Add_Library(mgxITK ${MODULE_TYPE} ${ITK_SOURCES})
    Target_Link_Libraries(mgxITK mgxITKutil mgx mgxBase ${ITK_LIBRARIES} Qt5::Widgets)
    If(WIN32)
      Set_Target_Properties(mgxITK PROPERTIES
        PREFIX ""
        DEFINE_SYMBOL mgxITK_EXPORTS)
      Install(TARGETS mgxITK
              RUNTIME DESTINATION ${MGX_PROCESS_DIR} COMPONENT MGXITK)
    Else()
      Set_Target_Properties(mgxITK PROPERTIES
        PUBLIC_HEADER "${ITK_HEADERS}"
        PREFIX ""
        DEFINE_SYMBOL mgxITK_EXPORTS)
      Install(TARGETS mgxITK
              DESTINATION ${MGX_PROCESS_DIR} COMPONENT MGXITK
              PUBLIC_HEADER DESTINATION ${MGX_PROCESS_INCLUDE_DIR} COMPONENT MGXITK)
    EndIf()
    
  EndIf(ITK_FOUND)
EndIf(BUILD_ITK)
