CMakeLists.txt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. cmake_minimum_required(VERSION 2.8)
  2. CMAKE_policy(SET CMP0015 NEW)
  3. project(cos-cpp-sdk)
  4. set(CMAKE_VERBOSE_MAKEFILE ON)
  5. option(BUILD_UNITTEST "Build unittest" OFF)
  6. option(BUILD_DEMO "Build demo" ON)
  7. option(BUILD_SHARED_LIB "Build shared library" OFF)
  8. option(ENABLE_COVERAGE "Enable Coverage" OFF)
  9. option(USE_OPENSSL_MD5 "Use Openssl Md5" OFF)
  10. if(APPLE)
  11. set(OS_TYPE "APPLE")
  12. elseif(UNIX)
  13. set(OS_TYPE "LINUX")
  14. elseif(WIN32)
  15. set(OS_TYPE "WINDOWS")
  16. else()
  17. message(FATAL_ERROR "unkonwn os type")
  18. endif()
  19. if(${CMAKE_SYSTEM_NAME} STREQUAL "Android")
  20. set(OS_TYPE "Android")
  21. message(STATUS "SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
  22. elseif(${CMAKE_SYSTEM_NAME} STREQUAL "iOS")
  23. set(OS_TYPE "iOS")
  24. message(STATUS "SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
  25. endif()
  26. message(STATUS "OS type: ${OS_TYPE}")
  27. set(POCO_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/third_party/include/)
  28. set(POCO_LIBS PocoNetSSL PocoNet PocoCrypto PocoUtil PocoJSON PocoXML PocoFoundation)
  29. if (${OS_TYPE} STREQUAL "WINDOWS")
  30. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
  31. set(BUILD_TARGET "Win32")
  32. if (CMAKE_CL_64)
  33. set(BUILD_TARGET "x64")
  34. endif()
  35. message(STATUS "Build target: ${BUILD_TARGET}")
  36. if (NOT DEFINED ${CMAKE_BUILD_TYPE})
  37. set(CMAKE_BUILD_TYPE "Release")
  38. endif()
  39. message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
  40. set(POCO_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${BUILD_TARGET}/poco)
  41. set(OPENSSL_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${BUILD_TARGET}/openssl)
  42. set(SYSTEM_LIBS "")
  43. set(OPENSSL_LIBS libssl libcrypto)
  44. #需要加该参数,不然VS会报错
  45. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")
  46. elseif(${OS_TYPE} STREQUAL "iOS")
  47. set(POCO_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}/poco/)
  48. set(OPENSSL_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}/openssl/)
  49. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra")
  50. set(SYSTEM_LIBS stdc++ pthread)
  51. set(OPENSSL_LIBS ssl crypto)
  52. elseif(${OS_TYPE} STREQUAL "Android")
  53. set(POCO_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}/poco/)
  54. set(OPENSSL_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}/openssl/)
  55. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra")
  56. set(SYSTEM_LIBS stdc++)
  57. set(OPENSSL_LIBS ssl crypto)
  58. # Linux or MacOs
  59. else()
  60. if (${OS_TYPE} STREQUAL "APPLE")
  61. set(POCO_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/macOS/poco/)
  62. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra")
  63. else()
  64. set(POCO_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/linux/poco/)
  65. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra")
  66. endif()
  67. set(SYSTEM_LIBS stdc++ pthread)
  68. set(OPENSSL_LIBS ssl crypto)
  69. endif()
  70. if(ENABLE_COVERAGE)
  71. # coverage option
  72. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
  73. endif()
  74. add_subdirectory(src)
  75. if(BUILD_UNITTEST)
  76. message(STATUS "Build unittest")
  77. set(GTEST_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/third_party/include/gtest/)
  78. set(GTEST_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/linux/gtest/)
  79. if (${OS_TYPE} STREQUAL "WINDOWS")
  80. set(GTEST_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${BUILD_TARGET}/gtest)
  81. endif()
  82. set(GTEST_LIBS gtest gtest_main)
  83. set(UT_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/unittest/include/)
  84. add_subdirectory(unittest)
  85. endif()
  86. if(BUILD_DEMO)
  87. message(STATUS "Build demo")
  88. add_subdirectory(demo)
  89. endif()