123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- cmake_minimum_required(VERSION 3.4.1)
- project(rknn_yolov5_demo)
- set(CMAKE_CXX_STANDARD 11)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- # skip 3rd-party lib dependencies
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--allow-shlib-undefined")
- # install target and libraries
- set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install/rknn_yolov5_demo_${CMAKE_SYSTEM_NAME})
- set(CMAKE_SKIP_INSTALL_RPATH FALSE)
- set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
- set(LIB_ARCH aarch64)
- # if (CMAKE_C_COMPILER MATCHES "aarch64")
- # set(LIB_ARCH aarch64)
- # else()
- # set(LIB_ARCH armhf)
- # endif()
- include_directories(${CMAKE_SOURCE_DIR})
- # rknn api
- if(TARGET_SOC STREQUAL "rk356x")
- set(RKNN_API_PATH ${CMAKE_SOURCE_DIR}/../../runtime/RK356X/${CMAKE_SYSTEM_NAME}/librknn_api)
- elseif(TARGET_SOC STREQUAL "rk3588")
- set(RKNN_API_PATH ${CMAKE_SOURCE_DIR}/../runtime/RK3588/${CMAKE_SYSTEM_NAME}/librknn_api)
- else()
- message(FATAL_ERROR "TARGET_SOC is not set, ref value: rk356x or rk3588 or rv110x")
- endif()
- if (CMAKE_SYSTEM_NAME STREQUAL "Android")
- set(RKNN_RT_LIB ${RKNN_API_PATH}/${CMAKE_ANDROID_ARCH_ABI}/librknnrt.so)
- else()
- set(RKNN_RT_LIB ${RKNN_API_PATH}/${LIB_ARCH}/librknnrt.so)
- endif()
- include_directories(${RKNN_API_PATH}/include)
- include_directories(${CMAKE_SOURCE_DIR}/../3rdparty)
- # opencv
- if (CMAKE_SYSTEM_NAME STREQUAL "Android")
- set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/../3rdparty/opencv/OpenCV-android-sdk/sdk/native/jni/abi-${CMAKE_ANDROID_ARCH_ABI})
- else()
- if(LIB_ARCH STREQUAL "armhf")
- set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/../3rdparty/opencv/opencv-linux-armhf/share/OpenCV)
- else()
- set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/../3rdparty/opencv/opencv-linux-aarch64/share/OpenCV)
- endif()
- endif()
- find_package(OpenCV REQUIRED)
- #rga
- if(TARGET_SOC STREQUAL "rk356x")
- set(RGA_PATH ${CMAKE_SOURCE_DIR}/../3rdparty/rga/RK356X)
- elseif(TARGET_SOC STREQUAL "rk3588")
- set(RGA_PATH ${CMAKE_SOURCE_DIR}/../3rdparty/rga/RK3588)
- else()
- message(FATAL_ERROR "TARGET_SOC is not set, ref value: rk356x or rk3588")
- endif()
- if (CMAKE_SYSTEM_NAME STREQUAL "Android")
- set(RGA_LIB ${RGA_PATH}/lib/Android/${CMAKE_ANDROID_ARCH_ABI}/librga.so)
- else()
- set(RGA_LIB ${RGA_PATH}/lib/Linux//${LIB_ARCH}/librga.so)
- endif()
- include_directories( ${RGA_PATH}/include)
- # mpp
- set(MPP_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/mpp)
- if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
- set(MPP_LIBS ${MPP_PATH}/${CMAKE_SYSTEM_NAME}/${LIB_ARCH}/librockchip_mpp.so)
- elseif (CMAKE_SYSTEM_NAME STREQUAL "Android")
- set(MPP_LIBS ${MPP_PATH}/${CMAKE_SYSTEM_NAME}/${CMAKE_ANDROID_ARCH_ABI}/libmpp.so)
- endif()
- include_directories(${MPP_PATH}/include)
- # zlmediakit
- set(ZLMEDIAKIT_PATH ${CMAKE_SOURCE_DIR}/../3rdparty/zlmediakit)
- if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
- include_directories(${ZLMEDIAKIT_PATH}/include)
- set(ZLMEDIAKIT_LIBS ${ZLMEDIAKIT_PATH}/${LIB_ARCH}/libmk_api.so)
- endif()
- if (ZLMEDIAKIT_LIBS)
- add_definitions(-DBUILD_VIDEO_RTSP)
- endif()
- set(CMAKE_INSTALL_RPATH "lib")
- # rknn_yolov5_demo
- include_directories( ${CMAKE_SOURCE_DIR}/include)
- add_executable(rknn_yolov5_demo
- src/main.cc
- src/postprocess.cc
- )
- target_link_libraries(rknn_yolov5_demo
- ${RKNN_RT_LIB}
- ${RGA_LIB}
- ${OpenCV_LIBS}
- )
- if (MPP_LIBS)
- add_executable(rknn_yolov5_video_demo
- src/main_video.cc
- src/postprocess.cc
- utils/mpp_decoder.cpp
- utils/mpp_encoder.cpp
- utils/drawing.cpp
- )
- target_link_libraries(rknn_yolov5_video_demo
- ${RKNN_RT_LIB}
- ${RGA_LIB}
- ${OpenCV_LIBS}
- ${MPP_LIBS}
- ${ZLMEDIAKIT_LIBS}
- )
- endif()
- # install target and libraries
- set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install/rknn_yolov5_demo_${CMAKE_SYSTEM_NAME})
- install(TARGETS rknn_yolov5_demo DESTINATION ./)
- install(PROGRAMS ${RKNN_RT_LIB} DESTINATION lib)
- install(PROGRAMS ${RGA_LIB} DESTINATION lib)
- install(DIRECTORY model DESTINATION ./)
- if (MPP_LIBS)
- install(TARGETS rknn_yolov5_video_demo DESTINATION ./)
- install(PROGRAMS ${MPP_LIBS} DESTINATION lib)
- endif()
- if (ZLMEDIAKIT_LIBS)
- install(PROGRAMS ${ZLMEDIAKIT_LIBS} DESTINATION lib)
- endif()
|