11cmake_minimum_required (VERSION 2.8)
22CMAKE_policy (SET CMP0015 NEW)
3-
43project (cos-cpp-sdk)
5- #SET(BOOST_HEADER_DIR "/root/boost_1_68_0/")
6- #SET(CMAKE_CXX_STANDARD 11) cmake 3.x才支持
74set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
8- SET (CMAKE_VERBOSE_MAKEFILE ON )
9- # find_package自动查找,或者通过SET(OPENSSL_VERSION 1.0.0)人工设置
10- find_package (OpenSSL REQUIRED)
11- #SET(OPENSSL_VERSION 1.0.1e)
12- message (${OPENSSL_VERSION} )
13-
14- # 单元测试与覆盖率统计
15- OPTION (ENABLE_UNITTEST "Unittest" OFF )
16-
17- # coverage option
18- IF (ENABLE_UNITTEST)
19- find_package (GTest REQUIRED)
20- if (NOT GTest_FOUND)
21- message (FATAL_ERROR "GTest Not Found!" )
22- endif (NOT GTest_FOUND)
23- MESSAGE (STATUS ENABLE_UNITTEST=${ENABLE_UNITTEST} )
24- SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage" )
25- SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage" )
26- ENDIF ()
27-
28- add_definitions (-D__COS_DEBUG__)
29-
30- # include directories
31- INCLUDE_DIRECTORIES (./include )
32- INCLUDE_DIRECTORIES (/usr/local/ssl/include )
33- # include_directories(${BOOST_HEADER_DIR})
34-
35- # lib directories
36- link_directories (/usr/local/lib)
37- link_directories (./lib)
38-
39- SET (EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR} /bin)
40- SET (LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR} /lib)
41-
42- IF (ENABLE_UNITTEST)
43- FILE (COPY unittest/testdata/config.json DESTINATION ${EXECUTABLE_OUTPUT_PATH} /)
44- FILE (COPY unittest/testdata/config_bucket_test.json DESTINATION ${EXECUTABLE_OUTPUT_PATH} /)
45- FILE (COPY unittest/testdata/sevenyou.txt DESTINATION ${EXECUTABLE_OUTPUT_PATH} /)
46- FILE (COPY unittest/merge_xml_results.py DESTINATION ${EXECUTABLE_OUTPUT_PATH} /)
47- INCLUDE_DIRECTORIES (./include /googletest/include /)
48- ADD_SUBDIRECTORY (unittest)
49- ENDIF ()
50-
51- ADD_SUBDIRECTORY (src)
52- ADD_SUBDIRECTORY (demo)
5+ set (CMAKE_VERBOSE_MAKEFILE ON )
6+
7+ option (BUILD_UNITTEST "Build unittest" OFF )
8+ option (BUILD_DEMO "Build demo" ON )
9+ option (BUILD_SHARED_LIB "Build shared library" OFF )
10+
11+ if (APPLE )
12+ set (OS_TYPE "APPLE" )
13+ elseif (UNIX )
14+ set (OS_TYPE "LINUX" )
15+ elseif (WIN32 )
16+ set (OS_TYPE "WINDOWS" )
17+ else ()
18+ message (FATAL_ERROR "unkonwn os type" )
19+ endif ()
20+ message (STATUS "OS type: ${OS_TYPE} " )
21+
22+ if (${OS_TYPE} STREQUAL "WINDOWS" )
23+ set (BUILD_TARGET "Win32" )
24+ if (CMAKE_CL_64 )
25+ set (BUILD_TARGET "x64" )
26+ endif ()
27+ message (STATUS "Build target: ${BUILD_TARGET} " )
28+ if (NOT DEFINED ${CMAKE_BUILD_TYPE} )
29+ set (CMAKE_BUILD_TYPE "Release" )
30+ endif ()
31+ message (STATUS "Build type: ${CMAKE_BUILD_TYPE} " )
32+
33+ set (POCO_LINK_DIR ${CMAKE_SOURCE_DIR} /third_party/lib/${BUILD_TARGET} /poco)
34+ set (POCO_INCLUDE_DIR ${CMAKE_SOURCE_DIR} /third_party/include /)
35+ set (POCO_LIBS PocoNetSSL PocoNet PocoCrypto PocoUtil PocoJSON PocoFoundation PocoXML)
36+
37+ set (SYSTEM_LIBS "" )
38+ #需要加该参数,不然VS会报错
39+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8" )
40+ else ()
41+ set (POCO_LINK_DIR ${CMAKE_SOURCE_DIR} /third_party/lib/linux/poco/)
42+ if (${OS_TYPE} STREQUAL "APPLE" )
43+ set (POCO_LINK_DIR ${CMAKE_SOURCE_DIR} /third_party/lib/macOS/poco/)
44+ endif ()
45+ set (POCO_INCLUDE_DIR ${CMAKE_SOURCE_DIR} /third_party/include /)
46+ set (POCO_LIBS PocoNetSSL PocoNet PocoCrypto PocoUtil PocoJSON PocoFoundation PocoXML)
47+
48+ set (SYSTEM_LIBS stdc++ pthread)
49+ endif ()
50+
51+ add_subdirectory (src)
52+
53+ if (BUILD_UNITTEST)
54+ message (STATUS "Build unittest" )
55+
56+ set (GTEST_INCLUDE_DIR ${CMAKE_SOURCE_DIR} /third_party/include /gtest/)
57+ set (GTEST_LINK_DIR ${CMAKE_SOURCE_DIR} /third_party/lib/linux/gtest/)
58+ if (${OS_TYPE} STREQUAL "WINDOWS" )
59+ set (GTEST_LINK_DIR ${CMAKE_SOURCE_DIR} /third_party/lib/${BUILD_TARGET} /gtest)
60+ endif ()
61+ set (GTEST_LIBS gtest gtest_main)
62+
63+ set (UT_INCLUDE_DIR ${CMAKE_SOURCE_DIR} /unittest/include /)
64+
65+ add_subdirectory (unittest)
66+ endif ()
67+
68+ if (BUILD_DEMO)
69+ message (STATUS "Build demo" )
70+ add_subdirectory (demo)
71+ endif ()
0 commit comments