CMakeLists.txt 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. set(SON_PROJECT_NAME tof3d)
  2. set(CMAKE_CUDA_ARCHITECTURES 60 61 62 70 72 75 86)
  3. set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc)
  4. project(${SON_PROJECT_NAME} LANGUAGES CXX CUDA)
  5. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -O3")
  6. set(CMAKE_CXX_STANDARD 17)
  7. #set(CMAKE_BUILD_TYPE Release)
  8. option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
  9. # CUDA
  10. find_package(CUDA REQUIRED)
  11. message(STATUS "CUDA Libs: \n${CUDA_LIBRARIES}\n")
  12. get_filename_component(CUDA_LIB_DIR ${CUDA_LIBRARIES} DIRECTORY)
  13. message(STATUS "CUDA Headers: \n${CUDA_INCLUDE_DIRS}\n")
  14. # OpenCV
  15. find_package(OpenCV REQUIRED)
  16. message(STATUS "OpenCV Libs: \n${OpenCV_LIBS}\n")
  17. message(STATUS "OpenCV Libraries: \n${OpenCV_LIBRARIES}\n")
  18. message(STATUS "OpenCV Headers: \n${OpenCV_INCLUDE_DIRS}\n")
  19. # TensorRT
  20. set(TensorRT_INCLUDE_DIRS /usr/include/aarch64-linux-gnu)
  21. set(TensorRT_LIBRARIES /usr/lib/aarch64-linux-gnu)
  22. message(STATUS "TensorRT Libs: \n${TensorRT_LIBRARIES}\n")
  23. message(STATUS "TensorRT Headers: \n${TensorRT_INCLUDE_DIRS}\n")
  24. list(APPEND INCLUDE_DIRS
  25. ${CUDA_INCLUDE_DIRS}
  26. ${OpenCV_INCLUDE_DIRS}
  27. ${TensorRT_INCLUDE_DIRS}
  28. include
  29. )
  30. list(APPEND ALL_LIBS
  31. ${CUDA_LIBRARIES}
  32. ${CUDA_LIB_DIR}
  33. ${TensorRT_LIBRARIES}
  34. )
  35. message("========== Load son project ${SON_PROJECT_NAME} ==========" )
  36. option(OPTION_COMMUNICATION_WITH_PLC "plc通信" OFF)
  37. message("<=${SON_PROJECT_NAME}=> OPTION_COMMUNICATION_WITH_PLC: " ${OPTION_COMMUNICATION_WITH_PLC})
  38. # if(NOT ENABLE_LIBRARY_PCL)
  39. # message(FATAL_ERROR "ENABLE_LIBRARY_PCL OFF")
  40. # endif ()
  41. if (NOT ENABLE_LIBRARY_GOOGLE_LOG)
  42. message(FATAL_ERROR "ENABLE_LIBRARY_GOOGLE_LOG OFF")
  43. endif ()
  44. # if (NOT ENABLE_LIBRARY_JSON)
  45. # message(FATAL_ERROR "ENABLE_LIBRARY_JSON OFF")
  46. # endif ()
  47. # if (NOT ENABLE_LIBRARY_THREAD)
  48. # message(FATAL_ERROR "Not enable ENABLE_LIBRARY_THREAD")
  49. # endif ()
  50. # 获取系统架构
  51. message("SYSTEM: ${CMAKE_SYSTEM_PROCESSOR}")
  52. if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
  53. set(NebulaSDK_PATH "${CMAKE_CURRENT_LIST_DIR}/NebulaSDK/AArch64")
  54. endif()
  55. message("NebulaSDK_PATH: ${NebulaSDK_PATH}")
  56. include_directories(
  57. ${INCLUDE_DIRS}
  58. ${CMAKE_CURRENT_LIST_DIR}
  59. ${PCL_INCLUDE_DIRS}
  60. ${OpenCV_INCLUDE_DIRS}
  61. ${PROTOBUF_INCLUDE_DIR}
  62. ${NebulaSDK_PATH}/include
  63. )
  64. aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/communication communication)
  65. aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/vzense vzense)
  66. aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/detect detect)
  67. set(SON_PROJECT_SOURCE_LIST ${SON_PROJECT_SOURCE_LIST}
  68. ${communication}
  69. ${vzense}
  70. ${detect}
  71. ${CMAKE_CURRENT_LIST_DIR}/tof3d_manager.h
  72. ${CMAKE_CURRENT_LIST_DIR}/tof3d_manager.cpp
  73. ${CMAKE_CURRENT_LIST_DIR}/tof3d_config.pb.h
  74. ${CMAKE_CURRENT_LIST_DIR}/tof3d_config.pb.cc
  75. ${CMAKE_CURRENT_LIST_DIR}/tof3DMain.cpp
  76. )
  77. set(SON_PROJECT_DEPEND_LIST ${SON_PROJECT_DEPEND_LIST}
  78. liblog
  79. libthread
  80. librabbitmq
  81. libmessage
  82. ${NebulaSDK_PATH}/lib/libNebula_api.so
  83. ${PROTOBUF_LIBRARIES}
  84. ${OpenCV_LIBRARIES}
  85. nvinfer
  86. nvinfer_plugin
  87. ${ALL_LIBS}
  88. )
  89. add_executable(${SON_PROJECT_NAME} ${SON_PROJECT_SOURCE_LIST})
  90. target_link_libraries(${SON_PROJECT_NAME} ${SON_PROJECT_DEPEND_LIST})
  91. target_compile_definitions(${SON_PROJECT_NAME} PRIVATE PROJECT_NAME="${SON_PROJECT_NAME}")
  92. if(${OpenCV_VERSION} VERSION_GREATER_EQUAL 4.7.0)
  93. message(STATUS "Build with -DBATCHED_NMS")
  94. add_definitions(-DBATCHED_NMS)
  95. endif()
  96. install(TARGETS ${SON_PROJECT_NAME}
  97. LIBRARY DESTINATION lib # 动态库安装路径
  98. ARCHIVE DESTINATION lib # 静态库安装路径
  99. RUNTIME DESTINATION bin # 可执行文件安装路径
  100. PUBLIC_HEADER DESTINATION include # 头文件安装路径
  101. )