ctkBlockCheckDependencies.cmake 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #
  2. # Independently of the value of CTK_SUPERBUILD, each external project definition will
  3. # provides either the include and library directories or a variable name
  4. # used by the corresponding Find<package>.cmake files.
  5. #
  6. # Within top-level CMakeLists.txt file, the variable names will be expanded if not in
  7. # superbuild mode. The include and library dirs are then used in
  8. # ctkMacroBuildApp, ctkMacroBuildLib, and ctkMacroBuildPlugin
  9. #
  10. #-----------------------------------------------------------------------------
  11. # Collect CTK library target dependencies
  12. #
  13. ctkMacroCollectAllTargetLibraries("${CTK_LIBS}" "Libs" ALL_TARGET_LIBRARIES)
  14. ctkMacroCollectAllTargetLibraries("${CTK_PLUGINS}" "Plugins" ALL_TARGET_LIBRARIES)
  15. ctkMacroCollectAllTargetLibraries("${CTK_APPS}" "Applications" ALL_TARGET_LIBRARIES)
  16. #message(STATUS ALL_TARGET_LIBRARIES:${ALL_TARGET_LIBRARIES})
  17. #-----------------------------------------------------------------------------
  18. # Initialize NON_CTK_DEPENDENCIES variable
  19. #
  20. # Using the variable ALL_TARGET_LIBRARIES initialized above with the help
  21. # of the macro ctkMacroCollectAllTargetLibraries, let's get the list of all Non-CTK dependencies.
  22. # NON_CTK_DEPENDENCIES is expected by the macro ctkMacroShouldAddExternalProject
  23. ctkMacroGetAllNonProjectTargetLibraries("${ALL_TARGET_LIBRARIES}" NON_CTK_DEPENDENCIES)
  24. #message(NON_CTK_DEPENDENCIES:${NON_CTK_DEPENDENCIES})
  25. #-----------------------------------------------------------------------------
  26. # Enable and setup External project global properties
  27. #
  28. if(CTK_SUPERBUILD)
  29. set(ep_install_dir ${CMAKE_BINARY_DIR}/CMakeExternals/Install)
  30. set(ep_suffix "-cmake")
  31. set(ep_common_c_flags "${CMAKE_C_FLAGS_INIT} ${ADDITIONAL_C_FLAGS}")
  32. set(ep_common_cxx_flags "${CMAKE_CXX_FLAGS_INIT} ${ADDITIONAL_CXX_FLAGS}")
  33. set(ep_cxx_standard_arg)
  34. if(CMAKE_CXX_STANDARD)
  35. set(ep_cxx_standard_arg "-DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD}")
  36. endif()
  37. set(ep_common_cache_args
  38. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  39. -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
  40. -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
  41. -DCMAKE_C_FLAGS:STRING=${ep_common_c_flags}
  42. -DCMAKE_CXX_FLAGS:STRING=${ep_common_cxx_flags}
  43. -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir}
  44. -DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}
  45. -DBUILD_TESTING:BOOL=OFF
  46. -DCMAKE_MACOSX_RPATH:BOOL=${CMAKE_MACOSX_RPATH}
  47. ${ep_cxx_standard_arg}
  48. )
  49. endif()
  50. if(NOT DEFINED CTK_DEPENDENCIES)
  51. message(FATAL_ERROR "error: CTK_DEPENDENCIES variable is not defined !")
  52. endif()
  53. set(DCMTK_enabling_variable DCMTK_LIBRARIES)
  54. set(${DCMTK_enabling_variable}_INCLUDE_DIRS DCMTK_INCLUDE_DIR)
  55. set(${DCMTK_enabling_variable}_FIND_PACKAGE_CMD DCMTK)
  56. set(ITK_enabling_variable ITK_LIBRARIES)
  57. set(${ITK_enabling_variable}_LIBRARY_DIRS ITK_LIBRARY_DIRS)
  58. set(${ITK_enabling_variable}_INCLUDE_DIRS ITK_INCLUDE_DIRS)
  59. set(${ITK_enabling_variable}_FIND_PACKAGE_CMD ITK)
  60. set(Log4Qt_enabling_variable Log4Qt_LIBRARIES)
  61. set(${Log4Qt_enabling_variable}_INCLUDE_DIRS Log4Qt_INCLUDE_DIRS)
  62. set(${Log4Qt_enabling_variable}_FIND_PACKAGE_CMD Log4Qt)
  63. set(OpenIGTLink_enabling_variable OpenIGTLink_LIBRARIES)
  64. set(${OpenIGTLink_enabling_variable}_LIBRARY_DIRS OpenIGTLink_LIBRARY_DIRS)
  65. set(${OpenIGTLink_enabling_variable}_INCLUDE_DIRS OpenIGTLink_INCLUDE_DIRS)
  66. set(${OpenIGTLink_enabling_variable}_FIND_PACKAGE_CMD OpenIGTLink)
  67. set(PythonQt_enabling_variable PYTHONQT_LIBRARIES)
  68. set(${PythonQt_enabling_variable}_INCLUDE_DIRS PYTHONQT_INCLUDE_DIR PYTHON_INCLUDE_DIRS)
  69. set(${PythonQt_enabling_variable}_FIND_PACKAGE_CMD PythonQt)
  70. set(QtSOAP_enabling_variable QtSOAP_LIBRARIES)
  71. set(${QtSOAP_enabling_variable}_LIBRARY_DIRS QtSOAP_LIBRARY_DIRS)
  72. set(${QtSOAP_enabling_variable}_INCLUDE_DIRS QtSOAP_INCLUDE_DIRS)
  73. set(${QtSOAP_enabling_variable}_FIND_PACKAGE_CMD QtSOAP)
  74. set(QtTesting_enabling_variable QtTesting_LIBRARIES)
  75. set(${QtTesting_enabling_variable}_INCLUDE_DIRS QtTesting_INCLUDE_DIRS)
  76. set(${QtTesting_enabling_variable}_FIND_PACKAGE_CMD QtTesting)
  77. set(qxmlrpc_enabling_variable qxmlrpc_LIBRARY)
  78. set(${qxmlrpc_enabling_variable}_LIBRARY_DIRS qxmlrpc_LIBRARY_DIRS)
  79. set(${qxmlrpc_enabling_variable}_INCLUDE_DIRS qxmlrpc_INCLUDE_DIRS)
  80. set(${qxmlrpc_enabling_variable}_FIND_PACKAGE_CMD qxmlrpc)
  81. set(qRestAPI_enabling_variable qRestAPI_LIBRARIES)
  82. set(${qRestAPI_enabling_variable}_LIBRARY_DIRS qRestAPI_LIBRARY_DIRS)
  83. set(${qRestAPI_enabling_variable}_INCLUDE_DIRS qRestAPI_INCLUDE_DIRS)
  84. set(${qRestAPI_enabling_variable}_FIND_PACKAGE_CMD qRestAPI)
  85. set(VTK_enabling_variable VTK_LIBRARIES)
  86. set(${VTK_enabling_variable}_LIBRARY_DIRS VTK_LIBRARY_DIRS)
  87. set(${VTK_enabling_variable}_INCLUDE_DIRS VTK_INCLUDE_DIRS)
  88. set(${VTK_enabling_variable}_FIND_PACKAGE_CMD VTK)
  89. set(ZMQ_enabling_variable ZMQ_LIBRARIES)
  90. set(${ZMQ_enabling_variable}_LIBRARY_DIRS ZMQ_LIBRARY_DIRS)
  91. set(${ZMQ_enabling_variable}_INCLUDE_DIRS ZMQ_INCLUDE_DIRS)
  92. set(${ZMQ_enabling_variable}_FIND_PACKAGE_CMD ZMQ)
  93. macro(superbuild_is_external_project_includable possible_proj output_var)
  94. if(DEFINED ${possible_proj}_enabling_variable)
  95. ctkMacroShouldAddExternalProject(${${possible_proj}_enabling_variable} ${output_var})
  96. if(NOT ${${output_var}})
  97. if(${possible_proj} STREQUAL "VTK"
  98. AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
  99. set(${output_var} 1)
  100. else()
  101. unset(${${possible_proj}_enabling_variable}_INCLUDE_DIRS)
  102. unset(${${possible_proj}_enabling_variable}_LIBRARY_DIRS)
  103. unset(${${possible_proj}_enabling_variable}_FIND_PACKAGE_CMD)
  104. endif()
  105. endif()
  106. else()
  107. set(${output_var} 1)
  108. endif()
  109. endmacro()
  110. set(proj CTK)
  111. ExternalProject_Include_Dependencies(CTK
  112. PROJECT_VAR proj
  113. DEPENDS_VAR CTK_DEPENDENCIES
  114. USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
  115. )
  116. #message("Updated CTK_DEPENDENCIES:")
  117. #foreach(dep ${CTK_DEPENDENCIES})
  118. # message(" ${dep}")
  119. #endforeach()