CMakeLists.txt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. cmake_minimum_required(VERSION 3.4.1)
  2. project(rknn_yolov5_demo)
  3. set(CMAKE_CXX_STANDARD 11)
  4. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  5. # skip 3rd-party lib dependencies
  6. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--allow-shlib-undefined")
  7. # install target and libraries
  8. set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install/rknn_yolov5_demo_${CMAKE_SYSTEM_NAME})
  9. set(CMAKE_SKIP_INSTALL_RPATH FALSE)
  10. set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
  11. set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
  12. set(LIB_ARCH aarch64)
  13. # if (CMAKE_C_COMPILER MATCHES "aarch64")
  14. # set(LIB_ARCH aarch64)
  15. # else()
  16. # set(LIB_ARCH armhf)
  17. # endif()
  18. include_directories(${CMAKE_SOURCE_DIR})
  19. # rknn api
  20. if(TARGET_SOC STREQUAL "rk356x")
  21. set(RKNN_API_PATH ${CMAKE_SOURCE_DIR}/../../runtime/RK356X/${CMAKE_SYSTEM_NAME}/librknn_api)
  22. elseif(TARGET_SOC STREQUAL "rk3588")
  23. set(RKNN_API_PATH ${CMAKE_SOURCE_DIR}/../runtime/RK3588/${CMAKE_SYSTEM_NAME}/librknn_api)
  24. else()
  25. message(FATAL_ERROR "TARGET_SOC is not set, ref value: rk356x or rk3588 or rv110x")
  26. endif()
  27. if (CMAKE_SYSTEM_NAME STREQUAL "Android")
  28. set(RKNN_RT_LIB ${RKNN_API_PATH}/${CMAKE_ANDROID_ARCH_ABI}/librknnrt.so)
  29. else()
  30. set(RKNN_RT_LIB ${RKNN_API_PATH}/${LIB_ARCH}/librknnrt.so)
  31. endif()
  32. include_directories(${RKNN_API_PATH}/include)
  33. include_directories(${CMAKE_SOURCE_DIR}/../3rdparty)
  34. # opencv
  35. if (CMAKE_SYSTEM_NAME STREQUAL "Android")
  36. set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/../3rdparty/opencv/OpenCV-android-sdk/sdk/native/jni/abi-${CMAKE_ANDROID_ARCH_ABI})
  37. else()
  38. if(LIB_ARCH STREQUAL "armhf")
  39. set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/../3rdparty/opencv/opencv-linux-armhf/share/OpenCV)
  40. else()
  41. set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/../3rdparty/opencv/opencv-linux-aarch64/share/OpenCV)
  42. endif()
  43. endif()
  44. find_package(OpenCV REQUIRED)
  45. #rga
  46. if(TARGET_SOC STREQUAL "rk356x")
  47. set(RGA_PATH ${CMAKE_SOURCE_DIR}/../3rdparty/rga/RK356X)
  48. elseif(TARGET_SOC STREQUAL "rk3588")
  49. set(RGA_PATH ${CMAKE_SOURCE_DIR}/../3rdparty/rga/RK3588)
  50. else()
  51. message(FATAL_ERROR "TARGET_SOC is not set, ref value: rk356x or rk3588")
  52. endif()
  53. if (CMAKE_SYSTEM_NAME STREQUAL "Android")
  54. set(RGA_LIB ${RGA_PATH}/lib/Android/${CMAKE_ANDROID_ARCH_ABI}/librga.so)
  55. else()
  56. set(RGA_LIB ${RGA_PATH}/lib/Linux//${LIB_ARCH}/librga.so)
  57. endif()
  58. include_directories( ${RGA_PATH}/include)
  59. # mpp
  60. set(MPP_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/mpp)
  61. if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
  62. set(MPP_LIBS ${MPP_PATH}/${CMAKE_SYSTEM_NAME}/${LIB_ARCH}/librockchip_mpp.so)
  63. elseif (CMAKE_SYSTEM_NAME STREQUAL "Android")
  64. set(MPP_LIBS ${MPP_PATH}/${CMAKE_SYSTEM_NAME}/${CMAKE_ANDROID_ARCH_ABI}/libmpp.so)
  65. endif()
  66. include_directories(${MPP_PATH}/include)
  67. # zlmediakit
  68. set(ZLMEDIAKIT_PATH ${CMAKE_SOURCE_DIR}/../3rdparty/zlmediakit)
  69. if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
  70. include_directories(${ZLMEDIAKIT_PATH}/include)
  71. set(ZLMEDIAKIT_LIBS ${ZLMEDIAKIT_PATH}/${LIB_ARCH}/libmk_api.so)
  72. endif()
  73. if (ZLMEDIAKIT_LIBS)
  74. add_definitions(-DBUILD_VIDEO_RTSP)
  75. endif()
  76. set(CMAKE_INSTALL_RPATH "lib")
  77. # rknn_yolov5_demo
  78. include_directories( ${CMAKE_SOURCE_DIR}/include)
  79. add_executable(rknn_yolov5_demo
  80. src/main.cc
  81. src/postprocess.cc
  82. )
  83. target_link_libraries(rknn_yolov5_demo
  84. ${RKNN_RT_LIB}
  85. ${RGA_LIB}
  86. ${OpenCV_LIBS}
  87. )
  88. if (MPP_LIBS)
  89. add_executable(rknn_yolov5_video_demo
  90. src/main_video.cc
  91. src/postprocess.cc
  92. utils/mpp_decoder.cpp
  93. utils/mpp_encoder.cpp
  94. utils/drawing.cpp
  95. )
  96. target_link_libraries(rknn_yolov5_video_demo
  97. ${RKNN_RT_LIB}
  98. ${RGA_LIB}
  99. ${OpenCV_LIBS}
  100. ${MPP_LIBS}
  101. ${ZLMEDIAKIT_LIBS}
  102. )
  103. endif()
  104. # install target and libraries
  105. set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install/rknn_yolov5_demo_${CMAKE_SYSTEM_NAME})
  106. install(TARGETS rknn_yolov5_demo DESTINATION ./)
  107. install(PROGRAMS ${RKNN_RT_LIB} DESTINATION lib)
  108. install(PROGRAMS ${RGA_LIB} DESTINATION lib)
  109. install(DIRECTORY model DESTINATION ./)
  110. if (MPP_LIBS)
  111. install(TARGETS rknn_yolov5_video_demo DESTINATION ./)
  112. install(PROGRAMS ${MPP_LIBS} DESTINATION lib)
  113. endif()
  114. if (ZLMEDIAKIT_LIBS)
  115. install(PROGRAMS ${ZLMEDIAKIT_LIBS} DESTINATION lib)
  116. endif()