CMakeLists.txt 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. add_definitions(-D__OPENCV_BUILD=1)
  2. add_definitions(-D__OPENCV_APPS=1)
  3. if (NOT CMAKE_CROSSCOMPILING)
  4. file(RELATIVE_PATH __loc_relative "${OpenCV_BINARY_DIR}" "${CMAKE_CURRENT_LIST_DIR}/pattern-tools\n")
  5. file(APPEND "${OpenCV_BINARY_DIR}/opencv_apps_python_tests.cfg" "${__loc_relative}")
  6. endif()
  7. string(REPLACE "," ";" OPENCV_INSTALL_APPS_LIST "${OPENCV_INSTALL_APPS_LIST}") # support comma-separated list (,) too
  8. # Unified function for creating OpenCV applications:
  9. # ocv_add_application(tgt [MODULES <m1> [<m2> ...]] SRCS <src1> [<src2> ...])
  10. function(ocv_add_application the_target)
  11. cmake_parse_arguments(APP "" "" "MODULES;SRCS" ${ARGN})
  12. ocv_check_dependencies(${APP_MODULES})
  13. if(NOT OCV_DEPENDENCIES_FOUND)
  14. return()
  15. endif()
  16. project(${the_target})
  17. ocv_target_include_modules_recurse(${the_target} ${APP_MODULES})
  18. ocv_target_include_directories(${the_target} PRIVATE "${OpenCV_SOURCE_DIR}/include/opencv")
  19. ocv_add_executable(${the_target} ${APP_SRCS})
  20. ocv_target_link_libraries(${the_target} ${APP_MODULES})
  21. set_target_properties(${the_target} PROPERTIES
  22. DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
  23. ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}
  24. RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}
  25. OUTPUT_NAME "${the_target}")
  26. if(ENABLE_SOLUTION_FOLDERS)
  27. set_target_properties(${the_target} PROPERTIES FOLDER "applications")
  28. endif()
  29. if(NOT INSTALL_CREATE_DISTRIB
  30. OR (OPENCV_INSTALL_APPS_LIST STREQUAL "all" OR ";${OPENCV_INSTALL_APPS_LIST};" MATCHES ";${the_target};")
  31. )
  32. install(TARGETS ${the_target} RUNTIME DESTINATION ${OPENCV_BIN_INSTALL_PATH} COMPONENT dev)
  33. elseif(INSTALL_CREATE_DISTRIB)
  34. if(BUILD_SHARED_LIBS)
  35. install(TARGETS ${the_target} RUNTIME DESTINATION ${OPENCV_BIN_INSTALL_PATH} CONFIGURATIONS Release COMPONENT dev)
  36. endif()
  37. endif()
  38. endfunction()
  39. link_libraries(${OPENCV_LINKER_LIBS})
  40. macro(ocv_add_app directory)
  41. if(DEFINED BUILD_APPS_LIST)
  42. list(FIND BUILD_APPS_LIST ${directory} _index)
  43. if (${_index} GREATER -1)
  44. add_subdirectory(${directory})
  45. else()
  46. message(STATUS "Skip OpenCV app: ${directory}")
  47. endif()
  48. else()
  49. add_subdirectory(${directory})
  50. endif()
  51. endmacro()
  52. #ocv_add_app(traincascade)
  53. #ocv_add_app(createsamples)
  54. ocv_add_app(annotation)
  55. ocv_add_app(visualisation)
  56. ocv_add_app(interactive-calibration)
  57. ocv_add_app(version)
  58. ocv_add_app(model-diagnostics)