CMakeLists.txt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. set(MODULE_NAME "RVCComm")
  2. set(MODULE_PREFIX "RVCCOMM")
  3. include_directories(${CONAN_INCLUDE_DIRS_OPENSSL})
  4. include_directories(${CONAN_INCLUDE_DIRS_OPENSSL}/openssl)
  5. include_directories(${CMAKE_CURRENT_SOURCE_DIR})
  6. file(GLOB ${MODULE_PREFIX}_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp" "*.h" "*.c")
  7. # remove the no use file at all platform so far
  8. list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS
  9. ClientBase.h
  10. ClientBase.cpp
  11. ServerComm.h
  12. ServerComm.cpp
  13. )
  14. set(RVCCOMM_VERSION_STRING "1.0.1-dev1")
  15. rvc_set_win_dll_ver(${MODULE_PREFIX} ${RVCCOMM_VERSION_STRING})
  16. add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
  17. message(STATUS "CONAN_INCLUDE_DIRS_CURL: ${CONAN_INCLUDE_DIRS_CURL}")
  18. target_include_directories(${MODULE_NAME} PRIVATE
  19. ${CONAN_INCLUDE_DIRS_LIBKYSM}
  20. ${CONAN_INCLUDE_DIRS_CURL}
  21. ${CONAN_INCLUDE_DIRS_JSONCPP}
  22. ${RVC_TOOLKIT_INCLUDE_DIR}
  23. )
  24. target_link_directories(${MODULE_NAME} PRIVATE
  25. ${CONAN_LIB_DIRS_LIBKYSM}
  26. ${CONAN_LIB_DIRS_LIBSSH2}
  27. ${CONAN_LIB_DIRS_CURL}
  28. ${CONAN_LIB_DIRS_JSONCPP}
  29. )
  30. target_link_libraries(${MODULE_NAME}
  31. ${PRIVATE_KEYWORD} ${KYSM_LIBRARY_NAME}
  32. ${PRIVATE_KEYWORD} winpr
  33. ${PRIVATE_KEYWORD} ${OPENSSL_SSL_LIBRARY}
  34. ${PRIVATE_KEYWORD} ${OPENSSL_CRYPTO_LIBRARY}
  35. ${PRIVATE_KEYWORD} ${CONAN_LIBS_LIBSSH2}
  36. ${PRIVATE_KEYWORD} ${CONAN_LIBS_CURL}
  37. ${PRIVATE_KEYWORD} ${CONAN_LIBS_JSONCPP}
  38. )
  39. target_compile_definitions(${MODULE_NAME} PRIVATE "-DRVCCOMM_EXPORTS=1")
  40. set_target_properties(${MODULE_NAME} PROPERTIES DEBUG_POSTFIX "D")
  41. if (BUILD_TESTING)
  42. add_library(${MODULE_NAME}_a STATIC ${${MODULE_PREFIX}_SRCS})
  43. target_include_directories(${MODULE_NAME}_a PRIVATE
  44. ${CONAN_INCLUDE_DIRS_LIBKYSM}
  45. ${CONAN_INCLUDE_DIRS_CURL}
  46. ${CONAN_INCLUDE_DIRS_JSONCPP}
  47. ${RVC_TOOLKIT_INCLUDE_DIR}
  48. )
  49. message(STATUS "openssl library: ${OPENSSL_SSL_LIBRARY}")
  50. target_link_directories(${MODULE_NAME}_a PRIVATE
  51. ${CONAN_LIB_DIRS_LIBKYSM}
  52. ${CONAN_LIB_DIRS_LIBSSH2}
  53. ${CONAN_LIB_DIRS_CURL}
  54. ${CONAN_LIB_DIRS_JSONCPP}
  55. )
  56. target_link_libraries(${MODULE_NAME}_a PUBLIC winpr ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
  57. target_link_libraries(${MODULE_NAME}_a PUBLIC ${KYSM_LIBRARY_NAME})
  58. target_link_libraries(${MODULE_NAME}_a PRIVATE
  59. ${CONAN_LIBS_LIBSSH2}
  60. ${CONAN_LIBS_CURL}
  61. ${CONAN_LIBS_JSONCPP}
  62. )
  63. target_compile_definitions(${MODULE_NAME}_a PRIVATE "-DRVCCOMM_LINKED_AS_STATIC_LIBRARY")
  64. set(ADD_LIB_DIRS ${CONAN_LIB_DIRS_LIBKYSM} ${CONAN_LIB_DIRS_LIBSSH2}
  65. ${CONAN_LIB_DIRS_CURL}
  66. ${CONAN_LIB_DIRS_JSONCPP})
  67. add_subdirectory(test)
  68. endif()
  69. if(MSVC)
  70. install(TARGETS ${MODULE_NAME}
  71. RUNTIME DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries
  72. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT develops EXCLUDE_FROM_ALL
  73. LIBRARY DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT libraries
  74. )
  75. else()
  76. install(TARGETS ${MODULE_NAME}
  77. RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
  78. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
  79. LIBRARY DESTINATION "${RVC_RUNTIME_PATH}"
  80. COMPONENT libraries)
  81. endif(MSVC)
  82. if (WITH_PDB_SAVE AND MSVC AND BUILD_SHARED_LIBS)
  83. install(FILES ${RVC_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${RVC_PDBSAVE_PATH} COMPONENT symbols)
  84. endif()
  85. if(MSVC)
  86. set(RVC_CONAN_DEP_LIBS ${RVC_CONAN_DEP_LIBS}
  87. ${CONAN_BIN_DIRS_LIBKYSM}
  88. ${CONAN_BIN_DIRS_LIBSSH2}
  89. ${CONAN_BIN_DIRS_CURL}
  90. ${CONAN_BIN_DIRS_JSONCPP}
  91. ${CONAN_BIN_DIRS_ZLIB}
  92. PARENT_SCOPE)
  93. else()
  94. set(RVC_CONAN_DEP_LIBS ${RVC_CONAN_DEP_LIBS}
  95. ${CONAN_LIB_DIRS_LIBKYSM}
  96. ${CONAN_LIB_DIRS_LIBSSH2}
  97. ${CONAN_LIB_DIRS_CURL}
  98. ${CONAN_LIB_DIRS_JSONCPP}
  99. ${CONAN_LIB_DIRS_ZLIB}
  100. PARENT_SCOPE)
  101. endif(MSVC)