diff --git a/CMake/BuildConfigurations/Minimal.cmake b/CMake/BuildConfigurations/Minimal.cmake new file mode 100644 index 0000000000..91873eef15 --- /dev/null +++ b/CMake/BuildConfigurations/Minimal.cmake @@ -0,0 +1,5 @@ +set(BUILD_TESTING OFF CACHE BOOL "" FORCE) + +set(MITK_USE_BLUEBERRY OFF CACHE BOOL "" FORCE) +set(MITK_USE_CTK OFF CACHE BOOL "" FORCE) +set(MITK_USE_Qt5 OFF CACHE BOOL "" FORCE) diff --git a/CMake/BuildConfigurations/MinimalCmdApps.cmake b/CMake/BuildConfigurations/MinimalCmdApps.cmake new file mode 100644 index 0000000000..5831991dc7 --- /dev/null +++ b/CMake/BuildConfigurations/MinimalCmdApps.cmake @@ -0,0 +1,5 @@ +include(${CMAKE_CURRENT_LIST_DIR}/Minimal.cmake) + +if(NOT MITK_USE_SUPERBUILD) + set(BUILD_CoreCmdApps ON CACHE BOOL "" FORCE) +endif() diff --git a/CMake/Whitelists/Minimal.cmake b/CMake/Whitelists/Minimal.cmake index 6bfa892451..d3725a79a3 100644 --- a/CMake/Whitelists/Minimal.cmake +++ b/CMake/Whitelists/Minimal.cmake @@ -1,8 +1,7 @@ set(enabled_modules Core CppMicroServices ) set(enabled_plugins - "" -) \ No newline at end of file +) diff --git a/CMake/Whitelists/MinimalCmdApps.cmake b/CMake/Whitelists/MinimalCmdApps.cmake new file mode 100644 index 0000000000..15b5d443ea --- /dev/null +++ b/CMake/Whitelists/MinimalCmdApps.cmake @@ -0,0 +1,6 @@ +include(${CMAKE_CURRENT_LIST_DIR}/Minimal.cmake) + +list(APPEND enabled_modules + CommandLine + CoreCmdApps +) diff --git a/Modules/BasicImageProcessing/MiniApps/CMakeLists.txt b/Modules/BasicImageProcessing/MiniApps/CMakeLists.txt index c4254f4df3..e0aba755f2 100644 --- a/Modules/BasicImageProcessing/MiniApps/CMakeLists.txt +++ b/Modules/BasicImageProcessing/MiniApps/CMakeLists.txt @@ -1,99 +1,14 @@ option(BUILD_BasicImageProcessingMiniApps "Build commandline tools for Basic Image Processing" OFF) if(BUILD_BasicImageProcessingMiniApps OR MITK_BUILD_ALL_APPS) - - - include_directories( - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - ) - - # list of miniapps - # if an app requires additional dependencies - # they are added after a "^^" and separated by "_" - set( basicImageProcessingMiniApps - FileConverter^^MitkCore - ImageTypeConverter^^MitkCore - RectifyImage^^MitkCore - SingleImageArithmetic^^MitkCore_MitkBasicImageProcessing - TwoImageArithmetic^^MitkCore_MitkBasicImageProcessing - ImageAndValueArithmetic^^MitkCore_MitkBasicImageProcessing - MaskRangeBasedFiltering^^MitkCore_MitkBasicImageProcessing - MaskOutlierFiltering^^MitkCore_MitkBasicImageProcessing - ResampleImage^^MitkCore_MitkBasicImageProcessing - ResampleMask^^MitkCore_MitkBasicImageProcessing - LaplacianOfGaussian^^MitkCore_MitkBasicImageProcessing - MultiResolutionPyramid^^MitkCore_MitkBasicImageProcessing - ForwardWavelet^^MitkCore_MitkBasicImageProcessing - ) - - foreach(basicImageProcessingMiniApp ${basicImageProcessingMiniApps}) - # extract mini app name and dependencies - string(REPLACE "^^" "\\;" miniapp_info ${basicImageProcessingMiniApp}) - set(miniapp_info_list ${miniapp_info}) - list(GET miniapp_info_list 0 appname) - list(GET miniapp_info_list 1 raw_dependencies) - string(REPLACE "_" "\\;" dependencies "${raw_dependencies}") - set(dependencies_list ${dependencies}) - - mitk_create_executable(${appname} - DEPENDS MitkCore MitkCommandLine ${dependencies_list} - PACKAGE_DEPENDS ITK - CPP_FILES ${appname}.cpp - ) - # CPP_FILES ${appname}.cpp mitkCommandLineParser.cpp - - if(EXECUTABLE_IS_ENABLED) - - # On Linux, create a shell script to start a relocatable application - if(UNIX AND NOT APPLE) - install(PROGRAMS "${MITK_SOURCE_DIR}/CMake/RunInstalledApp.sh" DESTINATION "." RENAME ${EXECUTABLE_TARGET}.sh) - endif() - - get_target_property(_is_bundle ${EXECUTABLE_TARGET} MACOSX_BUNDLE) - - if(APPLE) - if(_is_bundle) - set(_target_locations ${EXECUTABLE_TARGET}.app) - set(${_target_locations}_qt_plugins_install_dir ${EXECUTABLE_TARGET}.app/Contents/MacOS) - set(_bundle_dest_dir ${EXECUTABLE_TARGET}.app/Contents/MacOS) - set(_qt_plugins_for_current_bundle ${EXECUTABLE_TARGET}.app/Contents/MacOS) - set(_qt_conf_install_dirs ${EXECUTABLE_TARGET}.app/Contents/Resources) - install(TARGETS ${EXECUTABLE_TARGET} BUNDLE DESTINATION . ) - else() - if(NOT MACOSX_BUNDLE_NAMES) - set(_qt_conf_install_dirs bin) - set(_target_locations bin/${EXECUTABLE_TARGET}) - set(${_target_locations}_qt_plugins_install_dir bin) - install(TARGETS ${EXECUTABLE_TARGET} RUNTIME DESTINATION bin) - else() - foreach(bundle_name ${MACOSX_BUNDLE_NAMES}) - list(APPEND _qt_conf_install_dirs ${bundle_name}.app/Contents/Resources) - set(_current_target_location ${bundle_name}.app/Contents/MacOS/${EXECUTABLE_TARGET}) - list(APPEND _target_locations ${_current_target_location}) - set(${_current_target_location}_qt_plugins_install_dir ${bundle_name}.app/Contents/MacOS) - message( " set(${_current_target_location}_qt_plugins_install_dir ${bundle_name}.app/Contents/MacOS) ") - - install(TARGETS ${EXECUTABLE_TARGET} RUNTIME DESTINATION ${bundle_name}.app/Contents/MacOS/) - endforeach() - endif() - endif() - else() - set(_target_locations bin/${EXECUTABLE_TARGET}${CMAKE_EXECUTABLE_SUFFIX}) - set(${_target_locations}_qt_plugins_install_dir bin) - set(_qt_conf_install_dirs bin) - install(TARGETS ${EXECUTABLE_TARGET} RUNTIME DESTINATION bin) - endif() - endif() - endforeach() - - # On Linux, create a shell script to start a relocatable application - if(UNIX AND NOT APPLE) - install(PROGRAMS "${MITK_SOURCE_DIR}/CMake/RunInstalledApp.sh" DESTINATION "." RENAME ${EXECUTABLE_TARGET}.sh) - endif() - - if(EXECUTABLE_IS_ENABLED) - MITK_INSTALL_TARGETS(EXECUTABLES ${EXECUTABLE_TARGET}) - endif() - + mitkFunctionCreateCommandLineApp(NAME SingleImageArithmetic DEPENDS MitkBasicImageProcessing) + mitkFunctionCreateCommandLineApp(NAME TwoImageArithmetic DEPENDS MitkBasicImageProcessing) + mitkFunctionCreateCommandLineApp(NAME ImageAndValueArithmetic DEPENDS MitkBasicImageProcessing) + mitkFunctionCreateCommandLineApp(NAME MaskRangeBasedFiltering DEPENDS MitkBasicImageProcessing) + mitkFunctionCreateCommandLineApp(NAME MaskOutlierFiltering DEPENDS MitkBasicImageProcessing) + mitkFunctionCreateCommandLineApp(NAME ResampleImage DEPENDS MitkBasicImageProcessing) + mitkFunctionCreateCommandLineApp(NAME ResampleMask DEPENDS MitkBasicImageProcessing) + mitkFunctionCreateCommandLineApp(NAME LaplacianOfGaussian DEPENDS MitkBasicImageProcessing) + mitkFunctionCreateCommandLineApp(NAME MultiResolutionPyramid DEPENDS MitkBasicImageProcessing) + mitkFunctionCreateCommandLineApp(NAME ForwardWavelet DEPENDS MitkBasicImageProcessing) endif() diff --git a/Modules/Core/CMakeLists.txt b/Modules/Core/CMakeLists.txt index 7dd2c80b0e..bae8a92060 100644 --- a/Modules/Core/CMakeLists.txt +++ b/Modules/Core/CMakeLists.txt @@ -1,65 +1,66 @@ set(TOOL_CPPS "") # temporary suppress warnings in the following files until image accessors are fully integrated. set_source_files_properties( src/DataManagement/mitkImage.cpp COMPILE_FLAGS -DMITK_NO_DEPRECATED_WARNINGS ) set_source_files_properties( src/Controllers/mitkSliceNavigationController.cpp COMPILE_FLAGS -DMITK_NO_DEPRECATED_WARNINGS ) MITK_CREATE_MODULE( INCLUDE_DIRS PUBLIC ${MITK_BINARY_DIR} PRIVATE src/Algorithms src/Controllers src/DataManagement src/Interactions src/IO src/Rendering ${OPENGL_INCLUDE_DIR} DEPENDS PUBLIC mbilog CppMicroServices PACKAGE_DEPENDS PRIVATE tinyxml OpenGL PUBLIC ITK|ITKTransform+ITKImageGrid+ITKImageFeature+ITKIOImageBase+ITKIOHDF5+ITKIOLSM+ITKIOMRC+ITKIOBioRad+ITKIOGE+ITKIOStimulate+ITKIOBruker+ITKIOMINC # We privately use/link all ITK modules in order to support all IO, Transform, etc. # factories from ITK which are registered "automatically" via a factory manager. PRIVATE ITK PUBLIC VTK|vtkFiltersTexture+vtkFiltersParallel+vtkImagingStencil+vtkImagingMath+vtkInteractionStyle+vtkRenderingOpenGL2+vtkRenderingContextOpenGL2+vtkRenderingVolumeOpenGL2+vtkRenderingFreeType+vtkRenderingLabel+vtkInteractionWidgets+vtkIOGeometry+vtkIOXML PUBLIC Boost|boost SUBPROJECTS MITK-Core # Do not automatically create CppMicroServices initialization code. # Because the VTK 6 "auto-init" functionality injects file-local static # initialization code in every cpp file which includes a VTK header, # static initialization order becomes an issue again. For the Mitk # core library, we need to ensure that the VTK static initialization stuff # happens before the CppMicroServices initialization, since the latter # might already use VTK code which needs to access VTK object factories. # Hence, CppMicroServices initialization code is placed manually within # the mitkCoreActivator.cpp file. NO_INIT ) if(NOT TARGET ${MODULE_TARGET}) message(SEND_ERROR "Core target ${MODULE_TARGET} does not exist") endif() function(_itk_create_factory_register_manager) # In MITK_ITK_Config.cmake, we do *not* include ITK_USE_FILE, which # prevents multiple registrations/unregistrations of ITK IO factories # during library loading/unloading (of MITK libraries). However, we need # "one" place where the IO factories are registered at # least once. This could be the application executable, but every executable would # need to take care of that itself. Instead, we allow the auto registration in the # Mitk Core library. set(NO_DIRECTORY_SCOPED_ITK_COMPILE_DEFINITION 1) find_package(ITK) include(${ITK_USE_FILE}) if(NOT ITK_NO_IO_FACTORY_REGISTER_MANAGER) # We manually add the define which will be of target scope. MITK # patches ITK_USE_FILE to remove the directory scoped compile # definition since it would be propagated to other targets in the # same directory scope but these targets might want to *not* # use the ITK factory manager stuff. target_compile_definitions(${MODULE_TARGET} PRIVATE ITK_IO_FACTORY_REGISTER_MANAGER) endif() endfunction() _itk_create_factory_register_manager() if(MSVC_IDE OR MSVC_VERSION) target_link_libraries(${MODULE_TARGET} PRIVATE psapi.lib) endif() -add_subdirectory(TestingHelper) - -add_subdirectory(test) +if(BUILD_TESTING) + add_subdirectory(TestingHelper) + add_subdirectory(test) +endif() diff --git a/Modules/CoreCmdApps/CMakeLists.txt b/Modules/CoreCmdApps/CMakeLists.txt new file mode 100644 index 0000000000..12d751c887 --- /dev/null +++ b/Modules/CoreCmdApps/CMakeLists.txt @@ -0,0 +1,7 @@ +option(BUILD_CoreCmdApps "Build command-line apps of the MitkCore module" OFF) + +if(BUILD_CoreCmdApps OR MITK_BUILD_ALL_APPS) + mitkFunctionCreateCommandLineApp(NAME FileConverter) + mitkFunctionCreateCommandLineApp(NAME ImageTypeConverter) + mitkFunctionCreateCommandLineApp(NAME RectifyImage) +endif() diff --git a/Modules/BasicImageProcessing/MiniApps/FileConverter.cpp b/Modules/CoreCmdApps/FileConverter.cpp similarity index 100% rename from Modules/BasicImageProcessing/MiniApps/FileConverter.cpp rename to Modules/CoreCmdApps/FileConverter.cpp diff --git a/Modules/BasicImageProcessing/MiniApps/ImageTypeConverter.cpp b/Modules/CoreCmdApps/ImageTypeConverter.cpp similarity index 100% rename from Modules/BasicImageProcessing/MiniApps/ImageTypeConverter.cpp rename to Modules/CoreCmdApps/ImageTypeConverter.cpp diff --git a/Modules/BasicImageProcessing/MiniApps/RectifyImage.cpp b/Modules/CoreCmdApps/RectifyImage.cpp similarity index 100% rename from Modules/BasicImageProcessing/MiniApps/RectifyImage.cpp rename to Modules/CoreCmdApps/RectifyImage.cpp diff --git a/Modules/ModuleList.cmake b/Modules/ModuleList.cmake index 4daa70f838..d65ee8faa4 100644 --- a/Modules/ModuleList.cmake +++ b/Modules/ModuleList.cmake @@ -1,85 +1,86 @@ # The entries in the mitk_modules list must be # ordered according to their dependencies. set(MITK_MODULES Core CommandLine + CoreCmdApps AppUtil LegacyIO DataTypesExt Annotation LegacyGL AlgorithmsExt MapperExt DICOMReader DICOMReaderServices DICOMQI DICOMTesting SceneSerializationBase PlanarFigure ImageDenoising ImageExtraction SceneSerialization Gizmo GraphAlgorithms Multilabel Chart ImageStatistics ContourModel SurfaceInterpolation Segmentation QtWidgets QtWidgetsExt ImageStatisticsUI SegmentationUI MatchPointRegistration MatchPointRegistrationUI Classification OpenIGTLink IGTBase IGT CameraCalibration OpenCL OpenCVVideoSupport QtOverlays ToFHardware ToFProcessing ToFUI PhotoacousticsHardware PhotoacousticsAlgorithms PhotoacousticsLib US USUI DicomUI Remeshing Python QtPython Persistence OpenIGTLinkUI IGTUI DicomRT RTUI IOExt XNAT TubeGraph BiophotonicsHardware BoundingShape RenderWindowManager RenderWindowManagerUI SemanticRelations SemanticRelationsUI CEST BasicImageProcessing ModelFit ModelFitUI Pharmacokinetics PharmacokineticsUI DICOMPM REST RESTService DICOMweb ) if(MITK_ENABLE_PIC_READER) list(APPEND MITK_MODULES IpPicSupportIO) endif()