CMakeLists.txt 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. cmake_minimum_required(VERSION 3.10)
  2. project(libuvc
  3. VERSION 0.0.7
  4. LANGUAGES C CXX
  5. )
  6. set(CMAKE_CXX_STANDARD 11)
  7. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  8. set(TARGET "UVC_Demo")
  9. # use make file
  10. set(CMAKE_GENERATOR "Makefiles")
  11. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  12. set(CMAKE_BUILD_TYPE "Debug")
  13. set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb") # 定义Debug编译参数
  14. # add_subdirectory(./libuvc-0.0.7/libuvc-0.0.7/)
  15. set(GRPC_DIR "/home/cat/grpcinstall")
  16. set(CMAKE_PREFIX_PATH /home/cat/grpcinstall)
  17. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libuvc-0.0.7/include/)
  18. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/PublicLibrary/rkmpp)
  19. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/PublicLibrary/rkrga/include)
  20. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/PublicLibrary/libuvc/include)
  21. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/PublicLibrary/spdlog/include)
  22. include_directories(${CMAKE_SOURCE_DIR}/3rdparty/rga/RK3588/include)
  23. include_directories(${CMAKE_SOURCE_DIR}/3rdparty/mpp/include)
  24. include_directories(${CMAKE_SOURCE_DIR}/runtime/RK3588/Linux/librknn_api/include)
  25. include_directories(${CMAKE_SOURCE_DIR}/3rdparty/json/include)
  26. include_directories(${GRPC_DIR}/include)
  27. include(common.cmake)
  28. # include_directories(${CMAKE_SOURCE_DIR}/3rdparty/opencv/opencv-linux-aarch64/include)
  29. # set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/3rdparty/opencv/opencv-linux-aarch64/share/OpenCV)
  30. find_package(OpenCV REQUIRED)
  31. link_directories(${CMAKE_CURRENT_SOURCE_DIR}/PublicLibrary/libuvc/lib)
  32. set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gpio_explorer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp)
  33. set(UVC_CONTROL ${CMAKE_CURRENT_SOURCE_DIR}/UVCGrabber/UVCDeviceManager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/UVCGrabber/UVCDevice.cpp ${CMAKE_CURRENT_SOURCE_DIR}/UVCGrabber/UVCCallBack.cpp)
  34. set(MPP_DECODER ${CMAKE_CURRENT_SOURCE_DIR}/MppDecoder/MppDecoder.cpp ${CMAKE_CURRENT_SOURCE_DIR}/MppDecoder/MppDecoder.h ${CMAKE_CURRENT_SOURCE_DIR}/MppDecoder/MppManager.cpp)
  35. set(RGA_COLORTRANSFER ${CMAKE_CURRENT_SOURCE_DIR}/RGAColorTransfer/RgaColorTransfer.cpp)
  36. set(DATA_CONTROL ${CMAKE_CURRENT_SOURCE_DIR}/DataManager/DataManager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/DataManager/DataPipe.h)
  37. set(AI_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/AIManager/beforeProcess.cpp ${CMAKE_CURRENT_SOURCE_DIR}/AIManager/postprocess.cpp ${CMAKE_CURRENT_SOURCE_DIR}/AIManager/RKNNManager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/AIManager/PPYOLOE.cpp)
  38. set(GRPC_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/GrpcTransfer/ImageService.pb.cc ${CMAKE_CURRENT_SOURCE_DIR}/GrpcTransfer/ImageService.grpc.pb.cc ${CMAKE_CURRENT_SOURCE_DIR}/GrpcTransfer/GrpcTransfer.cpp)
  39. set(THREAD_GUARDIAN ${CMAKE_CURRENT_SOURCE_DIR}/ThreadGuardian/ThreadGuardian.cpp)
  40. set(TEST_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/ImageTest/ImageTest.cpp)
  41. set(LOG_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/LogRecorder/LogOutput.cpp)
  42. add_executable(${TARGET} ${SOURCES} ${UVC_CONTROL} ${MPP_DECODER} ${RGA_COLORTRANSFER} ${AI_SOURCE} ${DATA_CONTROL} ${GRPC_SOURCE} ${TEST_SOURCE} ${LOG_SOURCE} ${THREAD_GUARDIAN})
  43. set_property(GLOBAL PROPERTY JOB_POOLS single_threaded=1)
  44. set_property(TARGET ${TARGET} PROPERTY JOB_POOL_COMPILE single_threaded)
  45. target_link_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/runtime/RK3588/Linux/librknn_api/aarch64)
  46. target_link_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/rga/RK3588/lib/Linux/aarch64)
  47. # target_link_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/opencv/opencv-linux-aarch64/lib)
  48. target_link_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/mpp/Linux/aarch64/)
  49. target_link_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/libuvc-0.0.7/libuvc-0.0.7/build)
  50. target_link_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/PublicLibrary/spdlog/lib)
  51. target_link_libraries(${TARGET} rknnrt)
  52. target_link_libraries(${TARGET} librga.a)
  53. target_link_libraries(${TARGET} pthread)
  54. target_link_libraries(${TARGET} opencv_core opencv_imgproc opencv_imgcodecs)
  55. target_link_libraries(${TARGET} libjpeg.a)
  56. target_link_libraries(${TARGET} libusb-1.0.so)
  57. target_link_libraries(${TARGET} libgpiod.so)
  58. target_link_libraries(${TARGET} uvc)
  59. target_link_libraries(${TARGET} librockchip_mpp.so)
  60. target_link_libraries(${TARGET} absl::check absl::flags absl::flags_parse absl::log)
  61. target_link_libraries(${TARGET} ${_REFLECTION} ${_GRPC_GRPCPP} ${_PROTOBUF_LIBPROTOBUF})
  62. target_link_libraries(${TARGET} libspdlog.a)
  63. set(INSTALL_BIN /USBDevice)
  64. set(INSTALL_LIB /home/cat/UsbDevice/lib)
  65. set(INSTALL_INC /home/cat/UsbDevice/include)
  66. set(SYSTEM_LIB /usr/lib/aarch64-linux-gnu/)
  67. # Install rules
  68. install(TARGETS ${TARGET}
  69. RUNTIME DESTINATION ${INSTALL_BIN}
  70. LIBRARY DESTINATION ${INSTALL_LIB}
  71. ARCHIVE DESTINATION ${INSTALL_LIB}
  72. )
  73. install(CODE "execute_process(COMMAND mkdir -p ${INSTALL_BIN})")
  74. # Install additional libraries
  75. install(FILES
  76. ${CMAKE_SOURCE_DIR}/runtime/RK3588/Linux/librknn_api/aarch64/librknnrt.so
  77. ${CMAKE_SOURCE_DIR}/3rdparty/mpp/Linux/aarch64/librockchip_mpp.so.0
  78. ${CMAKE_SOURCE_DIR}/libuvc-0.0.7/libuvc-0.0.7/build/libuvc.so.0.0.7
  79. ${SYSTEM_LIB}/libusb-1.0.so.0.3.0
  80. ${SYSTEM_LIB}/libgpiod.so.2.2.2
  81. DESTINATION ${INSTALL_BIN}
  82. )
  83. # Create symbolic links for .so files in the bin directory
  84. install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${INSTALL_LIB}/librknnrt.so ${INSTALL_BIN}/librknnrt.so)")
  85. install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${INSTALL_LIB}/librockchip_mpp.so.0 ${INSTALL_BIN}/librockchip_mpp.so.0)")
  86. install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${INSTALL_BIN}/libusb-1.0.so.0.3.0 ${INSTALL_BIN}/libusb-1.0.so)")
  87. install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${INSTALL_BIN}/libgpiod.so.2.2.2 ${INSTALL_BIN}/libgpiod.so)")
  88. install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${INSTALL_LIB}/libuvc.so.0.0.7 ${INSTALL_BIN}/libuvc.so.0)")
  89. set(LD_LIBRARY_PATH_COMMAND "export LD_LIBRARY_PATH=${INSTALL_BIN}:$ENV{LD_LIBRARY_PATH}")
  90. # Set LD_LIBRARY_PATH to include the bin directory
  91. install(CODE "execute_process(COMMAND LD_LIBRARY_PATH=${INSTALL_BIN}:$ENV{LD_LIBRARY_PATH} )")
  92. install(CODE "execute_process(COMMAND echo ${LD_LIBRARY_PATH_COMMAND} >> ~/.bashrc )")
  93. install(CODE "execute_process(COMMAND source ~/.bashrc )")