| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- cmake_minimum_required(VERSION 2.8)
- CMAKE_policy(SET CMP0015 NEW)
- project(cos-cpp-sdk)
- set(CMAKE_VERBOSE_MAKEFILE ON)
- option(BUILD_UNITTEST "Build unittest" OFF)
- option(BUILD_DEMO "Build demo" ON)
- option(BUILD_SHARED_LIB "Build shared library" OFF)
- option(ENABLE_COVERAGE "Enable Coverage" OFF)
- option(USE_OPENSSL_MD5 "Use Openssl Md5" OFF)
- if(APPLE)
- set(OS_TYPE "APPLE")
- elseif(UNIX)
- set(OS_TYPE "LINUX")
- elseif(WIN32)
- set(OS_TYPE "WINDOWS")
- else()
- message(FATAL_ERROR "unkonwn os type")
- endif()
- if(${CMAKE_SYSTEM_NAME} STREQUAL "Android")
- set(OS_TYPE "Android")
- message(STATUS "SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
- elseif(${CMAKE_SYSTEM_NAME} STREQUAL "iOS")
- set(OS_TYPE "iOS")
- message(STATUS "SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
- endif()
- message(STATUS "OS type: ${OS_TYPE}")
- set(POCO_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/third_party/include/)
- set(POCO_LIBS PocoNetSSL PocoNet PocoCrypto PocoUtil PocoJSON PocoXML PocoFoundation)
- if (${OS_TYPE} STREQUAL "WINDOWS")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
- set(BUILD_TARGET "Win32")
- if (CMAKE_CL_64)
- set(BUILD_TARGET "x64")
- endif()
- message(STATUS "Build target: ${BUILD_TARGET}")
- if (NOT DEFINED ${CMAKE_BUILD_TYPE})
- set(CMAKE_BUILD_TYPE "Release")
- endif()
- message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
- set(POCO_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${BUILD_TARGET}/poco)
- set(OPENSSL_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${BUILD_TARGET}/openssl)
- set(SYSTEM_LIBS "")
- set(OPENSSL_LIBS libssl libcrypto)
- #需要加该参数,不然VS会报错
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")
- elseif(${OS_TYPE} STREQUAL "iOS")
- set(POCO_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}/poco/)
- set(OPENSSL_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}/openssl/)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra")
- set(SYSTEM_LIBS stdc++ pthread)
- set(OPENSSL_LIBS ssl crypto)
- elseif(${OS_TYPE} STREQUAL "Android")
- set(POCO_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}/poco/)
- set(OPENSSL_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}/openssl/)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra")
- set(SYSTEM_LIBS stdc++)
- set(OPENSSL_LIBS ssl crypto)
- # Linux or MacOs
- else()
- if (${OS_TYPE} STREQUAL "APPLE")
- set(POCO_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/macOS/poco/)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra")
- else()
- set(POCO_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/linux/poco/)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra")
- endif()
- set(SYSTEM_LIBS stdc++ pthread)
- set(OPENSSL_LIBS ssl crypto)
- endif()
- if(ENABLE_COVERAGE)
- # coverage option
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
- endif()
- add_subdirectory(src)
- if(BUILD_UNITTEST)
- message(STATUS "Build unittest")
- set(GTEST_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/third_party/include/gtest/)
- set(GTEST_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/linux/gtest/)
- if (${OS_TYPE} STREQUAL "WINDOWS")
- set(GTEST_LINK_DIR ${CMAKE_SOURCE_DIR}/third_party/lib/${BUILD_TARGET}/gtest)
- endif()
- set(GTEST_LIBS gtest gtest_main)
- set(UT_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/unittest/include/)
- add_subdirectory(unittest)
- endif()
- if(BUILD_DEMO)
- message(STATUS "Build demo")
- add_subdirectory(demo)
- endif()
|