drogon/CMakeLists.txt

105 lines
3.0 KiB
CMake
Raw Normal View History

2018-04-27 11:00:24 +08:00
cmake_minimum_required (VERSION 2.6)
2018-04-27 14:38:27 +08:00
project (DROGON CXX)
2018-04-27 14:38:27 +08:00
2018-05-03 14:17:04 +08:00
EXEC_PROGRAM (gcc ARGS "--version | grep '^gcc'|awk '{print $3}' | sed s'/)//g'" OUTPUT_VARIABLE version)
MESSAGE(STATUS "This is gcc version:: " ${version})
2018-05-03 18:28:37 +08:00
if(version LESS 4.7.0)
MESSAGE(STATUS "gcc is too old")
stop()
elseif (version LESS 6.1.0)
2018-05-03 14:17:04 +08:00
MESSAGE(STATUS "c++11")
set(CMAKE_CXX_STD_FLAGS c++11)
elseif(version LESS 7.1.0)
set(CMAKE_CXX_STD_FLAGS c++14)
MESSAGE(STATUS "c++14")
else()
set(CMAKE_CXX_STD_FLAGS c++17)
2018-05-03 18:28:37 +08:00
add_definitions(-DUSE_STD_ANY)
2018-05-03 14:17:04 +08:00
MESSAGE(STATUS "c++17")
2018-05-03 18:28:37 +08:00
endif()
2018-05-03 14:17:04 +08:00
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake_modules/)
find_package (Jsoncpp REQUIRED)
include_directories(${JSONCPP_INCLUDE_DIRS})
link_directories(${JSONCPP_LIBRARY_DIRS})
2018-05-09 18:11:56 +08:00
find_package (UUID REQUIRED)
2018-05-03 14:17:04 +08:00
2018-06-15 00:07:43 +08:00
find_package (OpenSSL)
if(OpenSSL_FOUND)
add_definitions(-DUSE_OPENSSL)
endif()
2018-06-11 15:45:28 +08:00
message(STATUS "openssl inc path:" ${OPENSSL_INCLUDE_DIR})
include_directories(${OPENSSL_INCLUDE_DIR})
link_directories(${OPENSSL_SSL_LIBRARY})
link_directories(${OPENSSL_CRYPTO_LIBRARY})
2018-05-03 14:17:04 +08:00
find_package(Boost)
2018-05-03 18:28:37 +08:00
if(Boost_FOUND)
2018-05-03 14:17:04 +08:00
add_definitions(-DUSE_BOOST)
include_directories(${Boost_INCLUDE_DIRS})
endif()
2018-05-03 18:28:37 +08:00
set(CMAKE_CXX_FLAGS "-std=${CMAKE_CXX_STD_FLAGS} -g -Wall -fpermissive ${CMAKE_CXX_FLAGS}")
2018-05-03 18:28:37 +08:00
#string(REPLACE ";" " " CMAKE_CXX_FLAGS "${CXX_FLAGS}")
MESSAGE(STATUS ${CMAKE_CXX_FLAGS})
2018-04-27 14:38:27 +08:00
2018-05-28 14:34:47 +08:00
add_subdirectory(trantor)
include_directories(${PROJECT_SOURCE_DIR}/trantor ${PROJECT_SOURCE_DIR}/lib/inc)
2018-04-27 14:38:27 +08:00
2018-05-28 14:34:47 +08:00
add_custom_target(makeVersion)
add_custom_command(TARGET makeVersion
COMMAND ${PROJECT_SOURCE_DIR}/get_version.sh
ARGS ${PROJECT_SOURCE_DIR}/lib/inc/drogon/version.h
VERBATIM )
add_subdirectory(examples)
2018-05-28 14:34:47 +08:00
add_subdirectory(drogon_ctl)
2018-04-27 14:38:27 +08:00
aux_source_directory(${PROJECT_SOURCE_DIR}/lib/src DIR_SRCS)
2018-04-27 14:38:27 +08:00
ADD_LIBRARY(drogon ${DIR_SRCS})
2018-04-27 14:38:27 +08:00
SET(CMAKE_INSTALL_PREFIX /usr/local)
install(TARGETS drogon DESTINATION lib)
2018-05-02 18:28:33 +08:00
file(GLOB trantor_net_headers "${CMAKE_CURRENT_SOURCE_DIR}/lib/inc/drogon/*.h")
install(FILES ${trantor_net_headers} DESTINATION include/drogon)
2018-06-15 09:44:40 +08:00
SET(CONFIG_HEADER "${PROJECT_SOURCE_DIR}/config.h")
file(WRITE "${CONFIG_HEADER}" "const char definitions[]=\"")
add_dependencies(drogon trantor)
2018-05-28 14:34:47 +08:00
add_dependencies(drogon makeVersion)
2018-04-27 14:38:27 +08:00
get_directory_property(DEFS COMPILE_DEFINITIONS)
foreach(loop_var ${DEFS})
2018-06-15 00:07:43 +08:00
#message(STATUS "definitions " ${loop_var})
2018-06-15 09:44:40 +08:00
file(APPEND "${CONFIG_HEADER}" "-D" ${loop_var} " ")
endforeach(loop_var)
2018-06-15 09:44:40 +08:00
file(APPEND "${CONFIG_HEADER}" "\";")
file(APPEND "${CONFIG_HEADER}" "\n" "const char compileFlags[]=\"" ${CMAKE_CXX_FLAGS} "\";")
get_target_property(INS drogon INCLUDE_DIRECTORIES)
2018-06-15 09:44:40 +08:00
file(APPEND "${CONFIG_HEADER}" "\nconst char includeDirs[]=\"")
foreach(loop_var ${INS})
2018-06-15 09:44:40 +08:00
file(APPEND "${CONFIG_HEADER}" "-I" ${loop_var} " ")
endforeach(loop_var)
2018-06-15 09:44:40 +08:00
file(APPEND "${CONFIG_HEADER}" "\";\n")
EXEC_PROGRAM(${PROJECT_SOURCE_DIR}/update_config.sh ARGS "${CONFIG_HEADER} ${PROJECT_SOURCE_DIR}/lib/inc/drogon/config.h")
2018-05-04 09:51:12 +08:00
if (MAKETEST STREQUAL YES)
ADD_SUBDIRECTORY(tests)
endif ()
#target_link_libraries(drogon trantor pthread)