CMakeLists.txt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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} libtoolkit
  34. ${PRIVATE_KEYWORD} ${OPENSSL_SSL_LIBRARY}
  35. ${PRIVATE_KEYWORD} ${OPENSSL_CRYPTO_LIBRARY}
  36. ${PRIVATE_KEYWORD} ${CONAN_LIBS_LIBSSH2}
  37. ${PRIVATE_KEYWORD} ${CONAN_LIBS_CURL}
  38. ${PRIVATE_KEYWORD} ${CONAN_LIBS_JSONCPP}
  39. )
  40. target_compile_definitions(${MODULE_NAME} PRIVATE "-DRVCCOMM_EXPORTS=1")
  41. set_target_properties(${MODULE_NAME} PROPERTIES DEBUG_POSTFIX "D")
  42. if (BUILD_TESTING)
  43. add_library(${MODULE_NAME}_a STATIC ${${MODULE_PREFIX}_SRCS})
  44. target_include_directories(${MODULE_NAME}_a PRIVATE
  45. ${CONAN_INCLUDE_DIRS_LIBKYSM}
  46. ${CONAN_INCLUDE_DIRS_CURL}
  47. ${CONAN_INCLUDE_DIRS_JSONCPP}
  48. ${RVC_TOOLKIT_INCLUDE_DIR}
  49. )
  50. message(STATUS "openssl library: ${OPENSSL_SSL_LIBRARY}")
  51. target_link_directories(${MODULE_NAME}_a PRIVATE
  52. ${CONAN_LIB_DIRS_LIBKYSM}
  53. ${CONAN_LIB_DIRS_LIBSSH2}
  54. ${CONAN_LIB_DIRS_CURL}
  55. ${CONAN_LIB_DIRS_JSONCPP}
  56. )
  57. target_link_libraries(${MODULE_NAME}_a PUBLIC winpr ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
  58. target_link_libraries(${MODULE_NAME}_a PUBLIC ${KYSM_LIBRARY_NAME})
  59. target_link_libraries(${MODULE_NAME}_a PRIVATE
  60. ${CONAN_LIBS_LIBSSH2}
  61. ${CONAN_LIBS_CURL}
  62. ${CONAN_LIBS_JSONCPP}
  63. )
  64. target_compile_definitions(${MODULE_NAME}_a PRIVATE "-DRVCCOMM_LINKED_AS_STATIC_LIBRARY")
  65. set(ADD_LIB_DIRS ${CONAN_LIB_DIRS_LIBKYSM} ${CONAN_LIB_DIRS_LIBSSH2}
  66. ${CONAN_LIB_DIRS_CURL}
  67. ${CONAN_LIB_DIRS_JSONCPP})
  68. add_subdirectory(test)
  69. endif()
  70. if(MSVC)
  71. install(TARGETS ${MODULE_NAME}
  72. RUNTIME DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries
  73. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT develops EXCLUDE_FROM_ALL
  74. LIBRARY DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT libraries
  75. )
  76. else()
  77. install(TARGETS ${MODULE_NAME}
  78. RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
  79. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
  80. LIBRARY DESTINATION "${RVC_RUNTIME_PATH}"
  81. COMPONENT libraries)
  82. endif(MSVC)
  83. if (WITH_PDB_SAVE AND MSVC AND BUILD_SHARED_LIBS)
  84. install(FILES ${RVC_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${RVC_PDBSAVE_PATH} COMPONENT symbols)
  85. endif()
  86. if(MSVC)
  87. set(RVC_CONAN_DEP_LIBS ${RVC_CONAN_DEP_LIBS}
  88. ${CONAN_BIN_DIRS_LIBKYSM}
  89. ${CONAN_BIN_DIRS_LIBSSH2}
  90. ${CONAN_BIN_DIRS_CURL}
  91. ${CONAN_BIN_DIRS_JSONCPP}
  92. ${CONAN_BIN_DIRS_ZLIB}
  93. PARENT_SCOPE)
  94. else()
  95. set(RVC_CONAN_DEP_LIBS ${RVC_CONAN_DEP_LIBS}
  96. ${CONAN_LIB_DIRS_LIBKYSM}
  97. ${CONAN_LIB_DIRS_LIBSSH2}
  98. ${CONAN_LIB_DIRS_CURL}
  99. ${CONAN_LIB_DIRS_JSONCPP}
  100. ${CONAN_LIB_DIRS_ZLIB}
  101. PARENT_SCOPE)
  102. endif(MSVC)