• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1cmake_minimum_required(VERSION 3.5)
2project(webserver CXX)
3
4include(CheckIncludeFileCXX)
5
6check_include_file_cxx(any HAS_ANY)
7check_include_file_cxx(string_view HAS_STRING_VIEW)
8check_include_file_cxx(coroutine HAS_COROUTINE)
9if (NOT "${CMAKE_CXX_STANDARD}" STREQUAL "")
10    # Do nothing
11elseif (HAS_ANY AND HAS_STRING_VIEW AND HAS_COROUTINE)
12    set(CMAKE_CXX_STANDARD 20)
13elseif (HAS_ANY AND HAS_STRING_VIEW)
14    set(CMAKE_CXX_STANDARD 17)
15else ()
16    set(CMAKE_CXX_STANDARD 14)
17endif ()
18
19set(CMAKE_CXX_STANDARD_REQUIRED ON)
20set(CMAKE_CXX_EXTENSIONS OFF)
21
22add_executable(${PROJECT_NAME} main.cpp "controllers/download.cpp" "dto/info.cpp"  "untils/tcpserver.cpp")
23
24# ##############################################################################
25# If you include the drogon source code locally in your project, use this method
26# to add drogon
27# add_subdirectory(drogon)
28# target_link_libraries(${PROJECT_NAME} PRIVATE drogon)
29#
30# and comment out the following lines
31find_package(Drogon CONFIG REQUIRED)
32target_link_libraries(${PROJECT_NAME} PRIVATE Drogon::Drogon)
33find_package(Boost REQUIRED)
34target_link_libraries(${PROJECT_NAME} PRIVATE Boost::boost)
35find_package(OpenSSL REQUIRED)
36target_link_libraries(${PROJECT_NAME} PRIVATE OpenSSL::SSL)
37# ##############################################################################
38
39if (CMAKE_CXX_STANDARD LESS 17)
40    # With C++14, use boost to support any, string_view and filesystem
41    message(STATUS "use c++14")
42    find_package(Boost 1.61.0 REQUIRED)
43    target_link_libraries(${PROJECT_NAME} PUBLIC Boost::boost)
44elseif (CMAKE_CXX_STANDARD LESS 20)
45    message(STATUS "use c++17")
46else ()
47    message(STATUS "use c++20")
48endif ()
49
50aux_source_directory(controllers CTL_SRC)
51
52target_include_directories(${PROJECT_NAME}
53                           PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
54target_sources(${PROJECT_NAME}
55               PRIVATE
56               ${SRC_DIR}
57               ${CTL_SRC})
58# ##############################################################################
59# uncomment the following line for dynamically loading views
60# set_property(TARGET ${PROJECT_NAME} PROPERTY ENABLE_EXPORTS ON)
61
62# ##############################################################################
63