CMakeLists.txt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. set(SON_PROJECT_NAME clamp_lidar)
  2. message("========== Load son project ${SON_PROJECT_NAME} ==========" )
  3. option(OPTION_COMMUNICATION_WITH_PLC "plc通信" OFF)
  4. message("<=${SON_PROJECT_NAME}=> OPTION_COMMUNICATION_WITH_PLC: " ${OPTION_COMMUNICATION_WITH_PLC})
  5. if(OPTION_COMMUNICATION_WITH_PLC AND NOT ENABLE_LIBRARY_PLC)
  6. message(FATAL_ERROR "OPTION_COMMUNICATION_WITH_PLC ON but ENABLE_LIBRARY_PLC OFF")
  7. endif ()
  8. if(NOT ENABLE_LIBRARY_PCL)
  9. message(FATAL_ERROR "ENABLE_LIBRARY_PCL OFF")
  10. endif ()
  11. if (NOT ENABLE_LIBRARY_GOOGLE_LOG)
  12. message(FATAL_ERROR "ENABLE_LIBRARY_GOOGLE_LOG OFF")
  13. endif ()
  14. if (NOT ENABLE_LIBRARY_JSON)
  15. message(FATAL_ERROR "ENABLE_LIBRARY_JSON OFF")
  16. endif ()
  17. if (NOT ENABLE_LIBRARY_THREAD)
  18. message(FATAL_ERROR "Not enable ENABLE_LIBRARY_THREAD")
  19. endif ()
  20. if (OPTION_COMMUNICATION_WITH_PLC)
  21. set(snap7_include "/usr/local/include/snap7")
  22. if(IS_DIRECTORY ${snap7_include})
  23. include_directories(${snap7_include})
  24. else ()
  25. message(FATAL_ERROR "Not found snap7 directory ${snap7_include}")
  26. endif ()
  27. aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/plc plc)
  28. set(SON_PROJECT_SOURCE_LIST ${SON_PROJECT_SOURCE_LIST} ${plc})
  29. set(SON_PROJECT_DEPEND_LIST ${SON_PROJECT_DEPEND_LIST} libplc)
  30. add_definitions(-DOPTION_COMMUNICATION_WITH_PLC=1)
  31. else ()
  32. add_definitions(-DOPTION_COMMUNICATION_WITH_PLC=0)
  33. endif ()
  34. include_directories(
  35. ${PCL_INCLUDE_DIRS}
  36. )
  37. aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/lidar lidar)
  38. aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/detect detect)
  39. set(SON_PROJECT_SOURCE_LIST ${SON_PROJECT_SOURCE_LIST}
  40. ${lidar}
  41. ${detect}
  42. ${CMAKE_CURRENT_LIST_DIR}/main.cpp
  43. )
  44. set(SON_PROJECT_DEPEND_LIST ${SON_PROJECT_DEPEND_LIST}
  45. libjson
  46. liblog
  47. libpcl
  48. libthread
  49. ${PROTOBUF_LIBRARIES}
  50. )
  51. add_executable(${SON_PROJECT_NAME} ${SON_PROJECT_SOURCE_LIST})
  52. target_link_libraries(${SON_PROJECT_NAME} ${SON_PROJECT_DEPEND_LIST})
  53. target_compile_definitions(${SON_PROJECT_NAME} PRIVATE PROJECT_NAME="${SON_PROJECT_NAME}")
  54. install(TARGETS ${SON_PROJECT_NAME}
  55. LIBRARY DESTINATION lib # 动态库安装路径
  56. ARCHIVE DESTINATION lib # 静态库安装路径
  57. RUNTIME DESTINATION bin # 可执行文件安装路径
  58. PUBLIC_HEADER DESTINATION include # 头文件安装路径
  59. )