CMakeLists.txt 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. set(the_description "All OpenCV modules")
  2. set(OPENCV_MODULE_IS_PART_OF_WORLD FALSE)
  3. set(BUILD_opencv_world_INIT OFF)
  4. if(NOT BUILD_SHARED_LIBS)
  5. set(OPENCV_MODULE_TYPE STATIC)
  6. set(OPENCV_WORLD_FLAGS_PROPERTY STATIC_LIBRARY_FLAGS)
  7. else()
  8. set(OPENCV_WORLD_FLAGS_PROPERTY LINK_FLAGS)
  9. endif()
  10. function(include_one_module m)
  11. include("${OPENCV_MODULE_${m}_LOCATION}/CMakeLists.txt")
  12. foreach(var
  13. CMAKE_CXX_FLAGS CMAKE_C_FLAGS # Propagate warnings settings
  14. )
  15. set(${var} "${${var}}" PARENT_SCOPE)
  16. endforeach()
  17. endfunction()
  18. if(NOT OPENCV_INITIAL_PASS)
  19. set(ENABLE_PRECOMPILED_HEADERS OFF CACHE INTERNAL "" FORCE)
  20. project(opencv_world)
  21. # MSVS 2014 (vc14): LINK : fatal error LNK1210: exceeded internal ILK size limit; link with /INCREMENTAL:NO
  22. if(MSVC AND MSVC_VERSION EQUAL 1900)
  23. foreach(flag_var
  24. CMAKE_EXE_LINKER_FLAGS_DEBUG
  25. CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
  26. CMAKE_MODULE_LINKER_FLAGS_DEBUG
  27. CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
  28. CMAKE_SHARED_LINKER_FLAGS_DEBUG
  29. CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
  30. )
  31. if(${flag_var} MATCHES "/INCREMENTAL")
  32. string(REGEX REPLACE "/INCREMENTAL[^ ]*" "/INCREMENTAL:NO" ${flag_var} "${${flag_var}}")
  33. else()
  34. set(${flag_var} "${${flag_var}} /INCREMENTAL:NO*")
  35. endif()
  36. endforeach(flag_var)
  37. endif()
  38. message(STATUS "Processing WORLD modules...")
  39. foreach(m ${OPENCV_MODULES_BUILD})
  40. set(the_module ${m})
  41. if(OPENCV_MODULE_${m}_IS_PART_OF_WORLD)
  42. message(STATUS " module ${m}...")
  43. set(CMAKE_CURRENT_SOURCE_DIR "${OPENCV_MODULE_${m}_LOCATION}")
  44. #add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" ${CMAKE_CURRENT_BINARY_DIR}/${m})
  45. include_one_module(${m})
  46. endif()
  47. endforeach()
  48. message(STATUS "Processing WORLD modules... DONE")
  49. set(CMAKE_CURRENT_SOURCE_DIR "${OPENCV_MODULE_opencv_world_LOCATION}")
  50. endif()
  51. ocv_add_module(world opencv_core)
  52. set(headers_list)
  53. set(sources_list)
  54. set(link_deps "")
  55. foreach(m ${OPENCV_MODULE_${the_module}_DEPS} opencv_world)
  56. if(OPENCV_MODULE_${m}_IS_PART_OF_WORLD)
  57. list(APPEND headers_list ${OPENCV_MODULE_${m}_HEADERS})
  58. list(APPEND sources_list ${OPENCV_MODULE_${m}_SOURCES})
  59. endif()
  60. if(NOT " ${OPENCV_MODULE_${m}_LINK_DEPS}" STREQUAL " ")
  61. list(APPEND link_deps ${OPENCV_MODULE_${m}_LINK_DEPS})
  62. endif()
  63. endforeach()
  64. ocv_glob_module_sources(HEADERS ${headers_list} SOURCES ${sources_list})
  65. ocv_module_include_directories()
  66. #message(STATUS "${OPENCV_MODULE_${the_module}_HEADERS}")
  67. #message(STATUS "${OPENCV_MODULE_${the_module}_SOURCES}")
  68. ocv_create_module(${link_deps})
  69. if(";${OPENCV_MODULES_BUILD};" MATCHES ";opencv_viz;" AND OPENCV_MODULE_opencv_viz_IS_PART_OF_WORLD AND NOT (VTK_VERSION VERSION_LESS "8.90.0"))
  70. vtk_module_autoinit(TARGETS opencv_world MODULES ${VTK_LIBRARIES})
  71. endif()
  72. ocv_target_compile_definitions(${the_module} PRIVATE OPENCV_MODULE_IS_PART_OF_WORLD=1)
  73. # NOTE: https://github.com/opencv/opencv/issues/25543
  74. if (WITH_QT)
  75. qt_disable_unicode_defines(${the_module})
  76. endif()
  77. if(BUILD_opencv_imgcodecs AND OPENCV_MODULE_opencv_imgcodecs_IS_PART_OF_WORLD)
  78. ocv_imgcodecs_configure_target()
  79. endif()
  80. if(BUILD_opencv_highgui AND OPENCV_MODULE_opencv_highgui_IS_PART_OF_WORLD)
  81. ocv_highgui_configure_target()
  82. endif()