CMakeLists.txt 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. set(CMAKE_VERSION 3.6.2)
  2. cmake_minimum_required(VERSION ${CMAKE_VERSION})
  3. set(CMAKE_CXX_STANDARD 11)
  4. project(bytesflow-opencv-media)
  5. SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/output/bin)
  6. SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/output/lib)
  7. add_subdirectory(src)
  8. add_subdirectory(jni)
  9. ############################################# 加入jni支持############################################
  10. message(FIND JAVA_HOME---> $ENV{JAVA_HOME})
  11. set(JAVA_HOME $ENV{JAVA_HOME})
  12. message(JAVA_HOME ${JAVA_HOME})
  13. if (NOT DEFINED ENV{JAVA_HOME})
  14. message("not defined environment variable:JAVA_HOME")
  15. set(JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home)
  16. set(JNI_PATH ${JAVA_HOME}/include)
  17. endif ()
  18. ############################################# 加入 ffmpeg src 支持############################################
  19. IF (CMAKE_SYSTEM_NAME MATCHES "Linux")
  20. set(JNI_MD_PATH ${JAVA_HOME}/include/linux)
  21. set(JNI_PATH ${JAVA_HOME}/include)
  22. include_directories(${JNI_PATH})
  23. set(OPENCV_HOME /usr/local)
  24. set(OPENCV_INCLUDE ${OPENCV_HOME}/include/opencv4/)
  25. set(OPENCV_LIBS ${OPENCV_HOME}/lib64)
  26. set(FFMPEG_PREFIX /usr)
  27. set(FFMPEG_INCLUDE_DIRS ${FFMPEG_PREFIX}/include/ffmpeg/)
  28. set(FFMPEG_LIBRARIES ${FFMPEG_PREFIX}/lib64/)
  29. MESSAGE(FFMPEG_PREFIX ${FFMPEG_PREFIX})
  30. MESSAGE(FFMPEG_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIRS})
  31. MESSAGE(FFMPEG_LIBS ${FFMPEG_LIBRARIES})
  32. ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Darwin")
  33. set(JNI_PATH ${JAVA_HOME}/include)
  34. set(JNI_MD_PATH ${JAVA_HOME}/include/darwin)
  35. include_directories(${JNI_PATH})
  36. set(OPENCV_HOME /usr/local/Cellar/opencv/4.5.4_4)
  37. set(OPENCV_INCLUDE ${OPENCV_HOME}/include/opencv4)
  38. set(OPENCV_LIBS ${OPENCV_HOME}/lib)
  39. set(FFMPEG_PREFIX /usr/local/Cellar/ffmpeg@4/4.4.1)
  40. set(FFMPEG_INCLUDE_DIRS ${FFMPEG_PREFIX}/include/ffmpeg/)
  41. set(FFMPEG_LIBS ${FFMPEG_PREFIX}/lib64/)
  42. MESSAGE(FFMPEG_PREFIX ${FFMPEG_PREFIX})
  43. MESSAGE(FFMPEG_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIRS})
  44. MESSAGE(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES})
  45. ELSE ()
  46. MESSAGE(STATUS "other platform: ${CMAKE_SYSTEM_NAME}")
  47. ENDIF (CMAKE_SYSTEM_NAME MATCHES "Linux")
  48. message(OPENCV_INCLUDE>${OPENCV_INCLUDE})
  49. message(OPENCV_LIBS>${OPENCV_LIBS})
  50. message(JAVA_HOME>${JAVA_HOME})
  51. include_directories(${OPENCV_INCLUDE})
  52. include_directories(${JNI_MD_PATH})
  53. include_directories(${FFMPEG_INCLUDE_DIRS})
  54. link_directories(${OPENCV_LIBS})
  55. link_directories(${FFMPEG_LIBS})
  56. add_library(piaoquan_java_opencv SHARED
  57. ${Project_SRC}
  58. ${JAVA_JNI_SRC})
  59. add_library(video_similarity_detection SHARED
  60. ${Project_SRC})
  61. set(FFmpeg_LIBS
  62. -lavcodec
  63. -lavdevice
  64. -lavfilter
  65. -lavformat
  66. -lavutil
  67. -lswscale
  68. -lswresample)
  69. set(OpenCV_LIBS
  70. -lopencv_imgproc
  71. -lopencv_imgcodecs
  72. -lopencv_core
  73. -lopencv_highgui
  74. # -lopencv_xphoto
  75. # -lopencv_xobjdetect
  76. # -lopencv_ximgproc
  77. # -lopencv_xfeatures2d
  78. # -lopencv_wechat_qrcode
  79. # -lopencv_viz
  80. # -lopencv_videostab
  81. # -lopencv_videoio
  82. # -lopencv_video
  83. # -lopencv_tracking
  84. # -lopencv_text
  85. # -lopencv_surface_matching
  86. # -lopencv_superres
  87. # -lopencv_structured_light
  88. # -lopencv_stitching
  89. # -lopencv_stereo
  90. # -lopencv_shape
  91. # -lopencv_sfm
  92. # -lopencv_saliency
  93. # -lopencv_rgbd
  94. # -lopencv_reg
  95. # -lopencv_rapid
  96. # -lopencv_quality
  97. # -lopencv_plot
  98. # -lopencv_photo
  99. # -lopencv_phase_unwrapping
  100. # -lopencv_optflow
  101. # -lopencv_objdetect
  102. # -lopencv_ml
  103. # -lopencv_mcc
  104. # -lopencv_line_descriptor
  105. # -lopencv_intensity_transform
  106. # -lopencv_img_hash
  107. # -lopencv_hfs
  108. # -lopencv_gapi
  109. # -lopencv_fuzzy
  110. # -lopencv_freetype
  111. # -lopencv_flann
  112. # -lopencv_features2d
  113. # -lopencv_face
  114. # -lopencv_dpm
  115. # -lopencv_dnn_superres
  116. # -lopencv_dnn_objdetect
  117. # -lopencv_dnn
  118. # -lopencv_datasets
  119. # -lopencv_ccalib
  120. # -lopencv_calib3d
  121. # -lopencv_bioinspired
  122. # -lopencv_bgsegm
  123. # -lopencv_barcode
  124. # -lopencv_aruco
  125. # -lopencv_alphamat
  126. )
  127. # 条件判断
  128. if (CMAKE_BUILD_TYPE AND (CMAKE_BUILD_TYPE STREQUAL "Debug"))
  129. set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -O0")
  130. message("Debug mode:${CMAKE_C_FLAGS_DEBUG}")
  131. add_executable(ImageBlurDetection_debug main.cpp
  132. ${Project_SRC}
  133. count_down_latch.h
  134. ${JAVA_JNI_SRC}
  135. )
  136. target_link_libraries(ImageBlurDetection_debug -lpthread
  137. ${OpenCV_LIBS}
  138. )
  139. add_executable(video_similarity_detection_debug main.cpp
  140. ${Project_SRC}
  141. count_down_latch.h
  142. ${JAVA_JNI_SRC}
  143. )
  144. target_link_libraries(video_similarity_detection_debug -lpthread
  145. ${OpenCV_LIBS}
  146. ${FFmpeg_LIBS}
  147. )
  148. elseif (CMAKE_BUILD_TYPE AND (CMAKE_BUILD_TYPE STREQUAL "Release"))
  149. set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall -O3")
  150. message("Release mode:${CMAKE_C_FLAGS_RELEASE}")
  151. else ()
  152. message("else:${CMAKE_BUILD_TYPE}")
  153. message("else:${CMAKE_C_FLAGS_RELEASE}")
  154. endif ()
  155. target_link_libraries(piaoquan_java_opencv
  156. ${OpenCV_LIBS}
  157. )
  158. target_link_libraries(video_similarity_detection
  159. ${OpenCV_LIBS}
  160. ${FFmpeg_LIBS}
  161. )