Files
cos-cpp-sdk-v5/CMakeLists.txt
a158 3cf88acc07 BG
2026-04-05 20:22:11 +08:00

104 lines
3.6 KiB
CMake
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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()