CMakeLists.txt 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. cmake_minimum_required(VERSION 2.8.7)
  2. set(GSD_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..)
  3. include(CheckCXXCompilerFlag)
  4. CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
  5. if(NOT COMPILER_SUPPORTS_CXX11)
  6. message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
  7. endif()
  8. # compile flags
  9. # set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-as-needed")
  10. # set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG -O2")
  11. # set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -g")
  12. # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -D_REENTRANT -fPIC -Wall -Werror")
  13. # ---[ Options
  14. option(build_ExpelPlugin "build module ExpelPlugin" ON)
  15. option(build_HttpPlugin "build module HttpPlugin" ON)
  16. option(build_MonitorPlugin "build module MonitorPlugin" ON)
  17. option(build_TcpPlugin "build module TcpPlugin" ON)
  18. # ---[ 3rdparty
  19. set(3RDPARTY_LIBS "")
  20. set(CMAKE_MODULE_PATH ${GSD_ROOT_DIR}/cmake)
  21. # ---[ rapidjson
  22. include_directories(${GSD_ROOT_DIR}/3rdparty/)
  23. include_directories(${GSD_ROOT_DIR}/framework/core/include)
  24. include_directories(${GSD_ROOT_DIR}/framework/request/include)
  25. include_directories(${GSD_ROOT_DIR}/modules/Expel/include)
  26. include_directories(${GSD_ROOT_DIR}/modules/HttpClient/include)
  27. include_directories(${GSD_ROOT_DIR}/modules/InfineFilter/include)
  28. include_directories(${GSD_ROOT_DIR}/modules/Monitor/include)
  29. include_directories(${GSD_ROOT_DIR}/modules/TCPClient/include)
  30. include_directories(${GSD_ROOT_DIR}/modules/config/include)
  31. set(module_list "")
  32. set(srcs "")
  33. if(build_ExpelPlugin)
  34. list(APPEND module_list ExpelPlugin)
  35. include_directories(${PROJECT_SOURCE_DIR}/modules/ExpelPlugin/src)
  36. install(DIRECTORY ExpelPlugin/include/ DESTINATION include)
  37. endif()
  38. if(build_HttpPlugin)
  39. list(APPEND module_list HttpPlugin)
  40. include_directories(${PROJECT_SOURCE_DIR}/modules/HttpPlugin/src)
  41. install(DIRECTORY HttpPlugin/include/ DESTINATION include)
  42. endif()
  43. if(build_MonitorPlugin)
  44. list(APPEND module_list MonitorPlugin)
  45. include_directories(${PROJECT_SOURCE_DIR}/modules/MonitorPlugin/src)
  46. install(DIRECTORY MonitorPlugin/include/ DESTINATION include)
  47. endif()
  48. if(build_TcpPlugin)
  49. list(APPEND module_list TcpPlugin)
  50. include_directories(${PROJECT_SOURCE_DIR}/modules/TcpPlugin/src)
  51. install(DIRECTORY TcpPlugin/include/ DESTINATION include)
  52. endif()
  53. include_directories(${CMAKE_CURRENT_SOURCE_DIR})
  54. foreach(module ${module_list})
  55. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/${module}/include)
  56. file(GLOB_RECURSE module_src ${CMAKE_CURRENT_SOURCE_DIR}/${module}/*.cpp)
  57. list(APPEND srcs ${module_src})
  58. endforeach()
  59. set(LIBRARY_OUTPUT_PATH ${GSD_ROOT_DIR}/lib)
  60. add_library(gsd_plugins SHARED ${srcs})
  61. target_link_libraries(gsd_plugins ${3RDPARTY_LIBS} rt dl uuid pthread ZLToolKit)