cmake_minimum_required(VERSION 3.10) project(libuvc VERSION 0.0.7 LANGUAGES C CXX ) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(TARGET "UVC_Demo") # use make file set(CMAKE_GENERATOR "Makefiles") set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_BUILD_TYPE "Debug") set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb") # 定义Debug编译参数 # add_subdirectory(./libuvc-0.0.7/libuvc-0.0.7/) set(GRPC_DIR "/home/cat/grpcinstall") set(CMAKE_PREFIX_PATH /home/cat/grpcinstall) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libuvc-0.0.7/include/) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/PublicLibrary/rkmpp) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/PublicLibrary/rkrga/include) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/PublicLibrary/libuvc/include) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/PublicLibrary/spdlog/include) include_directories(${CMAKE_SOURCE_DIR}/3rdparty/rga/RK3588/include) include_directories(${CMAKE_SOURCE_DIR}/3rdparty/mpp/include) include_directories(${CMAKE_SOURCE_DIR}/runtime/RK3588/Linux/librknn_api/include) include_directories(${CMAKE_SOURCE_DIR}/3rdparty/json/include) include_directories(${GRPC_DIR}/include) include(common.cmake) # include_directories(${CMAKE_SOURCE_DIR}/3rdparty/opencv/opencv-linux-aarch64/include) # set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/3rdparty/opencv/opencv-linux-aarch64/share/OpenCV) find_package(OpenCV REQUIRED) link_directories(${CMAKE_CURRENT_SOURCE_DIR}/PublicLibrary/libuvc/lib) set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gpio_explorer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp) set(UVC_CONTROL ${CMAKE_CURRENT_SOURCE_DIR}/UVCGrabber/UVCDeviceManager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/UVCGrabber/UVCDevice.cpp ${CMAKE_CURRENT_SOURCE_DIR}/UVCGrabber/UVCCallBack.cpp) set(MPP_DECODER ${CMAKE_CURRENT_SOURCE_DIR}/MppDecoder/MppDecoder.cpp ${CMAKE_CURRENT_SOURCE_DIR}/MppDecoder/MppDecoder.h ${CMAKE_CURRENT_SOURCE_DIR}/MppDecoder/MppManager.cpp) set(RGA_COLORTRANSFER ${CMAKE_CURRENT_SOURCE_DIR}/RGAColorTransfer/RgaColorTransfer.cpp) set(DATA_CONTROL ${CMAKE_CURRENT_SOURCE_DIR}/DataManager/DataManager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/DataManager/DataPipe.h) 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) 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) set(TEST_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/ImageTest/ImageTest.cpp) set(LOG_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/LogRecorder/LogOutput.cpp) add_executable(${TARGET} ${SOURCES} ${UVC_CONTROL} ${MPP_DECODER} ${RGA_COLORTRANSFER} ${AI_SOURCE} ${DATA_CONTROL} ${GRPC_SOURCE} ${TEST_SOURCE} ${LOG_SOURCE}) set_property(GLOBAL PROPERTY JOB_POOLS single_threaded=1) set_property(TARGET ${TARGET} PROPERTY JOB_POOL_COMPILE single_threaded) target_link_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/runtime/RK3588/Linux/librknn_api/aarch64) target_link_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/rga/RK3588/lib/Linux/aarch64) # target_link_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/opencv/opencv-linux-aarch64/lib) target_link_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/mpp/Linux/aarch64/) target_link_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/libuvc-0.0.7/libuvc-0.0.7/build) target_link_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/PublicLibrary/spdlog/lib) target_link_libraries(${TARGET} rknnrt) target_link_libraries(${TARGET} librga.a) target_link_libraries(${TARGET} pthread) target_link_libraries(${TARGET} opencv_core opencv_imgproc opencv_imgcodecs) target_link_libraries(${TARGET} libjpeg.a) target_link_libraries(${TARGET} libusb-1.0.so) target_link_libraries(${TARGET} libgpiod.so) target_link_libraries(${TARGET} uvc) target_link_libraries(${TARGET} librockchip_mpp.so) target_link_libraries(${TARGET} absl::check absl::flags absl::flags_parse absl::log) target_link_libraries(${TARGET} ${_REFLECTION} ${_GRPC_GRPCPP} ${_PROTOBUF_LIBPROTOBUF}) target_link_libraries(${TARGET} libspdlog.a) set(INSTALL_BIN /USBDevice) set(INSTALL_LIB /home/cat/UsbDevice/lib) set(INSTALL_INC /home/cat/UsbDevice/include) set(SYSTEM_LIB /usr/lib/aarch64-linux-gnu/) # Install rules install(TARGETS ${TARGET} RUNTIME DESTINATION ${INSTALL_BIN} LIBRARY DESTINATION ${INSTALL_LIB} ARCHIVE DESTINATION ${INSTALL_LIB} ) install(CODE "execute_process(COMMAND mkdir -p ${INSTALL_BIN})") # Install additional libraries install(FILES ${CMAKE_SOURCE_DIR}/runtime/RK3588/Linux/librknn_api/aarch64/librknnrt.so ${CMAKE_SOURCE_DIR}/3rdparty/mpp/Linux/aarch64/librockchip_mpp.so.0 ${CMAKE_SOURCE_DIR}/libuvc-0.0.7/libuvc-0.0.7/build/libuvc.so.0.0.7 ${SYSTEM_LIB}/libusb-1.0.so.0.3.0 ${SYSTEM_LIB}/libgpiod.so.2.2.2 DESTINATION ${INSTALL_BIN} ) # Create symbolic links for .so files in the bin directory install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${INSTALL_LIB}/librknnrt.so ${INSTALL_BIN}/librknnrt.so)") install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${INSTALL_LIB}/librockchip_mpp.so.0 ${INSTALL_BIN}/librockchip_mpp.so.0)") 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)") install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${INSTALL_BIN}/libgpiod.so.2.2.2 ${INSTALL_BIN}/libgpiod.so)") install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${INSTALL_LIB}/libuvc.so.0.0.7 ${INSTALL_BIN}/libuvc.so.0)") set(LD_LIBRARY_PATH_COMMAND "export LD_LIBRARY_PATH=${INSTALL_BIN}:$ENV{LD_LIBRARY_PATH}") # Set LD_LIBRARY_PATH to include the bin directory install(CODE "execute_process(COMMAND LD_LIBRARY_PATH=${INSTALL_BIN}:$ENV{LD_LIBRARY_PATH} )") install(CODE "execute_process(COMMAND echo ${LD_LIBRARY_PATH_COMMAND} >> ~/.bashrc )") install(CODE "execute_process(COMMAND source ~/.bashrc )")