123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- set(SON_PROJECT_NAME tof3d)
- message("========== Load son project ${SON_PROJECT_NAME} ==========" )
- unset(OPTION_ENABLE_TENSORRT_DETECT_CODE CACHE)
- #find_package(CUDA REQUIRED)
- #if (${CUDA_FOUND})
- # option(OPTION_ENABLE_TENSORRT_DETECT_CODE "" ON)
- #else ()
- option(OPTION_ENABLE_TENSORRT_DETECT_CODE "" OFF)
- #endif ()
- message("<=${SON_PROJECT_NAME}=> OPTION_ENABLE_TENSORRT_DETECT_CODE: " ${OPTION_ENABLE_TENSORRT_DETECT_CODE})
- if (OPTION_ENABLE_TENSORRT_DETECT_CODE)
- set(CMAKE_CUDA_ARCHITECTURES 60 61 62 70 72 75 86)
- set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc)
- project(${SON_PROJECT_NAME} LANGUAGES CXX CUDA)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -O3")
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
- option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
- # CUDA
- find_package(CUDA REQUIRED)
- message(STATUS "CUDA Libs: \n${CUDA_LIBRARIES}\n")
- get_filename_component(CUDA_LIB_DIR ${CUDA_LIBRARIES} DIRECTORY)
- message(STATUS "CUDA Headers: \n${CUDA_INCLUDE_DIRS}\n")
- # OpenCV
- message(STATUS "OpenCV Libs: \n${OpenCV_LIBS}\n")
- message(STATUS "OpenCV Libraries: \n${OpenCV_LIBRARIES}\n")
- message(STATUS "OpenCV Headers: \n${OpenCV_INCLUDE_DIRS}\n")
- if(${OpenCV_VERSION} VERSION_GREATER_EQUAL 4.7.0)
- message(STATUS "Build with -DBATCHED_NMS")
- add_definitions(-DBATCHED_NMS)
- endif()
- # TensorRT
- set(TensorRT_INCLUDE_DIRS /usr/include/aarch64-linux-gnu)
- set(TensorRT_LIBRARIES /usr/lib/aarch64-linux-gnu)
- message(STATUS "TensorRT Libs: \n${TensorRT_LIBRARIES}\n")
- message(STATUS "TensorRT Headers: \n${TensorRT_INCLUDE_DIRS}\n")
- list(APPEND INCLUDE_DIRS
- ${CUDA_INCLUDE_DIRS}
- ${TensorRT_INCLUDE_DIRS}
- )
- list(APPEND ALL_LIBS
- nvinfer
- nvinfer_plugin
- ${CUDA_LIBRARIES}
- ${CUDA_LIB_DIR}
- ${TensorRT_LIBRARIES}
- )
- aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/detect/tensorrt_detect yolov8_detect)
- else ()
- aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/detect/onnx_detect yolov8_detect)
- endif ()
- find_package(gRPC CONFIG REQUIRED)
- find_package(Ceres REQUIRED)
- option(OPTION_COMMUNICATION_WITH_PLC "plc通信" OFF)
- message("<=${SON_PROJECT_NAME}=> OPTION_COMMUNICATION_WITH_PLC: " ${OPTION_COMMUNICATION_WITH_PLC})
- # 获取系统架构
- message("SYSTEM: ${CMAKE_SYSTEM_PROCESSOR}")
- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
- set(NebulaSDK_PATH "${CMAKE_CURRENT_LIST_DIR}/vzense/NebulaSDK/AArch64")
- elseif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
- set(NebulaSDK_PATH "${CMAKE_CURRENT_LIST_DIR}/vzense/NebulaSDK/x86_64")
- endif()
- include_directories(
- ${INCLUDE_DIRS}
- ${CMAKE_CURRENT_LIST_DIR}
- ${PCL_INCLUDE_DIRS}
- ${OpenCV_INCLUDE_DIRS}
- ${PROTOBUF_INCLUDE_DIR}
- ${CERES_INCLUDE_DIR}
- ${NebulaSDK_PATH}/include
- )
- aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/proto proto)
- aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/vzense vzense)
- aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/communication communication)
- aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/communication/grpc communication_grpc)
- #aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/communication/mqtt communication_mqtt)
- aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/communication/rabbitmq communication_rabbitmq)
- aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/detect detect)
- aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/detect/ceres_detect ceres_detect)
- set(SON_PROJECT_SOURCE_LIST ${SON_PROJECT_SOURCE_LIST}
- ${proto}
- ${vzense}
- ${communication}
- ${communication_grpc}
- ${communication_mqtt}
- ${communication_rabbitmq}
- ${detect}
- ${ceres_detect}
- ${yolov8_detect}
- ${CMAKE_CURRENT_LIST_DIR}/tof3DMain.cpp
- )
- set(SON_PROJECT_DEPEND_LIST ${SON_PROJECT_DEPEND_LIST}
- liblog
- libthread
- librabbitmq
- libmessage
- ${NebulaSDK_PATH}/lib/libNebula_api.so
- ${absl_LIBRARIES}
- protobuf::libprotobuf
- gRPC::grpc++_reflection
- ${OpenCV_LIBRARIES}
- libpcl
- ${CERES_LIBRARIES}
- ${ALL_LIBS}
- )
- add_executable(${SON_PROJECT_NAME} ${SON_PROJECT_SOURCE_LIST})
- target_link_libraries(${SON_PROJECT_NAME} ${SON_PROJECT_DEPEND_LIST})
- target_compile_definitions(${SON_PROJECT_NAME} PRIVATE PROJECT_NAME="${SON_PROJECT_NAME}")
- if (OPTION_ENABLE_TENSORRT_DETECT_CODE)
- target_compile_definitions(${SON_PROJECT_NAME} PRIVATE ENABLE_TENSORRT_DETECT)
- endif ()
- install(TARGETS ${SON_PROJECT_NAME}
- LIBRARY DESTINATION lib # 动态库安装路径
- ARCHIVE DESTINATION lib # 静态库安装路径
- RUNTIME DESTINATION bin # 可执行文件安装路径
- PUBLIC_HEADER DESTINATION include # 头文件安装路径
- )
|