CMakeLists.txt 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  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. set(-DCMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall -s -Wdeprecated-declarations")
  8. set(-DCMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -s -Wdeprecated-declarations")
  9. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread")
  10. add_definitions("-Wall -g")
  11. add_subdirectory(src/opencv)
  12. add_subdirectory(jni)
  13. add_subdirectory(src/utils)
  14. add_subdirectory(src/ffmpeg)
  15. ############################################# 加入 json 支持############################################
  16. set(JSON_HEADER
  17. src/json/include)
  18. FILE(GLOB JSON_ROOT_CPP
  19. src/json/libs/lib_json/*.cpp)
  20. include_directories(${JSON_HEADER})
  21. ############################################# 加入jni支持############################################
  22. message(FIND JAVA_HOME---> $ENV{JAVA_HOME})
  23. set(JAVA_HOME $ENV{JAVA_HOME})
  24. message(JAVA_HOME ${JAVA_HOME})
  25. if (NOT DEFINED ENV{JAVA_HOME})
  26. message("not defined environment variable:JAVA_HOME")
  27. set(JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home)
  28. set(JNI_PATH ${JAVA_HOME}/include)
  29. endif ()
  30. ############################################# 加入 ffmpeg src 支持############################################
  31. IF (CMAKE_SYSTEM_NAME MATCHES "Linux")
  32. set(JNI_MD_PATH ${JAVA_HOME}/include/linux)
  33. set(JNI_PATH ${JAVA_HOME}/include)
  34. include_directories(${JNI_PATH})
  35. set(OPENCV_HOME /usr/local)
  36. set(OPENCV_INCLUDE ${OPENCV_HOME}/include/opencv4/)
  37. set(OPENCV_LIBS ${OPENCV_HOME}/lib64)
  38. set(FFMPEG_PREFIX /usr)
  39. set(FFMPEG_INCLUDE_DIRS ${FFMPEG_PREFIX}/include/ffmpeg/)
  40. set(FFMPEG_LIBRARIES ${FFMPEG_PREFIX}/lib64/)
  41. MESSAGE(FFMPEG_PREFIX ${FFMPEG_PREFIX})
  42. MESSAGE(FFMPEG_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIRS})
  43. MESSAGE(FFMPEG_LIBS ${FFMPEG_LIBRARIES})
  44. ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Darwin")
  45. set(JNI_PATH ${JAVA_HOME}/include)
  46. set(JNI_MD_PATH ${JAVA_HOME}/include/darwin)
  47. include_directories(${JNI_PATH})
  48. set(OPENCV_HOME /usr/local/Cellar/opencv/4.5.4_4)
  49. set(OPENCV_INCLUDE ${OPENCV_HOME}/include/opencv4)
  50. set(OPENCV_LIBS ${OPENCV_HOME}/lib)
  51. set(FFMPEG_PREFIX /usr/local/Cellar/ffmpeg@4/4.4.1)
  52. set(FFMPEG_INCLUDE_DIRS ${FFMPEG_PREFIX}/include/)
  53. set(FFMPEG_LIBS ${FFMPEG_PREFIX}/lib/)
  54. MESSAGE(FFMPEG_PREFIX ${FFMPEG_PREFIX})
  55. MESSAGE(FFMPEG_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIRS})
  56. MESSAGE(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES})
  57. ELSE ()
  58. MESSAGE(STATUS "other platform: ${CMAKE_SYSTEM_NAME}")
  59. ENDIF (CMAKE_SYSTEM_NAME MATCHES "Linux")
  60. message(OPENCV_INCLUDE>${OPENCV_INCLUDE})
  61. message(OPENCV_LIBS>${OPENCV_LIBS})
  62. message(JAVA_HOME>${JAVA_HOME})
  63. message(FFMPEG_INCLUDE_DIRS>${FFMPEG_INCLUDE_DIRS})
  64. include_directories(${OPENCV_INCLUDE})
  65. include_directories(${JNI_MD_PATH})
  66. include_directories(${FFMPEG_INCLUDE_DIRS})
  67. link_directories(${OPENCV_LIBS})
  68. link_directories(${FFMPEG_LIBS})
  69. add_library(piaoquan_java_opencv SHARED
  70. ${OpenCV_SRC}
  71. ${UTILS_SRC}
  72. ${JSON_ROOT_CPP}
  73. ${FFMPEG_SRC}
  74. ${JAVA_JNI_SRC})
  75. #add_library(video_similarity_detection SHARED
  76. # ${UTILS_SRC}
  77. # ${JSON_ROOT_CPP}
  78. # ${Project_SRC})
  79. set(FFmpeg_LIBS
  80. -lavcodec
  81. -lavdevice
  82. -lavfilter
  83. -lavformat
  84. -lavutil
  85. -lswscale
  86. -lswresample)
  87. set(OpenCV_LIBS
  88. -lopencv_imgproc
  89. -lopencv_imgcodecs
  90. -lopencv_core
  91. -lopencv_highgui
  92. # -lopencv_xphoto
  93. # -lopencv_xobjdetect
  94. # -lopencv_ximgproc
  95. # -lopencv_xfeatures2d
  96. # -lopencv_wechat_qrcode
  97. # -lopencv_viz
  98. # -lopencv_videostab
  99. # -lopencv_videoio
  100. # -lopencv_video
  101. # -lopencv_tracking
  102. # -lopencv_text
  103. # -lopencv_surface_matching
  104. # -lopencv_superres
  105. # -lopencv_structured_light
  106. # -lopencv_stitching
  107. # -lopencv_stereo
  108. # -lopencv_shape
  109. # -lopencv_sfm
  110. # -lopencv_saliency
  111. # -lopencv_rgbd
  112. # -lopencv_reg
  113. # -lopencv_rapid
  114. # -lopencv_quality
  115. # -lopencv_plot
  116. # -lopencv_photo
  117. # -lopencv_phase_unwrapping
  118. # -lopencv_optflow
  119. # -lopencv_objdetect
  120. # -lopencv_ml
  121. # -lopencv_mcc
  122. # -lopencv_line_descriptor
  123. # -lopencv_intensity_transform
  124. # -lopencv_img_hash
  125. # -lopencv_hfs
  126. # -lopencv_gapi
  127. # -lopencv_fuzzy
  128. # -lopencv_freetype
  129. # -lopencv_flann
  130. # -lopencv_features2d
  131. # -lopencv_face
  132. # -lopencv_dpm
  133. # -lopencv_dnn_superres
  134. # -lopencv_dnn_objdetect
  135. # -lopencv_dnn
  136. # -lopencv_datasets
  137. # -lopencv_ccalib
  138. # -lopencv_calib3d
  139. # -lopencv_bioinspired
  140. # -lopencv_bgsegm
  141. # -lopencv_barcode
  142. # -lopencv_aruco
  143. # -lopencv_alphamat
  144. )
  145. # 条件判断
  146. if (CMAKE_BUILD_TYPE AND (CMAKE_BUILD_TYPE STREQUAL "Debug"))
  147. set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -O0")
  148. message("Debug mode:${CMAKE_C_FLAGS_DEBUG}")
  149. add_executable(ImageBlurDetection_debug main.cpp
  150. ${OpenCV_SRC}
  151. ${UTILS_SRC}
  152. ${JSON_ROOT_CPP}
  153. ${FFMPEG_SRC}
  154. ${JAVA_JNI_SRC}
  155. )
  156. target_link_libraries(ImageBlurDetection_debug -lpthread
  157. ${OpenCV_LIBS}
  158. ${FFmpeg_LIBS}
  159. )
  160. add_executable(test_md5 md5_main.cpp
  161. src/utils/md5.h
  162. src/utils/md5.c
  163. )
  164. add_executable(video_similarity_comparison src/video_similarity_comparison.cpp
  165. ${OpenCV_SRC}
  166. ${JSON_ROOT_CPP}
  167. ${FFMPEG_SRC}
  168. ${UTILS_SRC}
  169. )
  170. target_link_libraries(video_similarity_comparison -lpthread
  171. ${OpenCV_LIBS}
  172. ${FFmpeg_LIBS}
  173. )
  174. elseif (CMAKE_BUILD_TYPE AND (CMAKE_BUILD_TYPE STREQUAL "Release"))
  175. set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall -O3")
  176. message("Release mode:${CMAKE_C_FLAGS_RELEASE}")
  177. else ()
  178. message("else:${CMAKE_BUILD_TYPE}")
  179. message("else:${CMAKE_C_FLAGS_RELEASE}")
  180. endif ()
  181. if (UNIX)
  182. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/breakpad/ret/include/breakpad)
  183. # link_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/breakpad/ret/libs)
  184. target_link_libraries(piaoquan_java_opencv -lpthread
  185. ${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/breakpad/ret/libs/libbreakpad.a
  186. ${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/breakpad/ret/libs/libbreakpad_client.a
  187. ${FFmpeg_LIBS}
  188. ${OpenCV_LIBS}
  189. )
  190. else ()
  191. target_link_libraries(piaoquan_java_opencv -lpthread
  192. ${FFmpeg_LIBS}
  193. ${OpenCV_LIBS}
  194. )
  195. endif ()