|
|
|
cmake_minimum_required(VERSION 3.6)
|
|
|
|
set(INS_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..)
|
|
|
|
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib/)
|
|
|
|
|
|
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
|
|
|
|
|
|
|
include(CheckCXXCompilerFlag)
|
|
|
|
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
|
|
|
|
if(NOT COMPILER_SUPPORTS_CXX11)
|
|
|
|
message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(USE_libstdcpp)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++")
|
|
|
|
message("-- Warning: forcing libstdc++ (controlled by USE_libstdcpp option in cmake)")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# compile flags
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-as-needed")
|
|
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG -O2")
|
|
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -g")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -D_REENTRANT -fPIC -Wall -Werror")
|
|
|
|
|
|
|
|
# ---[ Options
|
|
|
|
option(build_UserApp "build module UserApp " ON)
|
|
|
|
option(build_TcpProxySession "build module TcpProxySession" ON)
|
|
|
|
option(build_dataType "build module dataType" ON)
|
|
|
|
option(build_Disposition "build module Disposition" ON)
|
|
|
|
option(build_md5 "build module md5" ON)
|
|
|
|
|
|
|
|
# ---[ 3rdparty
|
|
|
|
set(3RDPARTY_LIBS "")
|
|
|
|
set(DEPENDENCIES "")
|
|
|
|
|
|
|
|
set(CMAKE_MODULE_PATH ${CNSTREAM_ROOT_DIR}/cmake)
|
|
|
|
|
|
|
|
# ---[ opencv
|
|
|
|
set(OpenCV_FIND_QUIETLY true)
|
|
|
|
#find_package(OpenCV REQUIRED) //this will include opencv_ts which result in crash on centos
|
|
|
|
find_package(OpenCV OPTIONAL_COMPONENTS imgcodecs)
|
|
|
|
find_package(OpenCV OPTIONAL_COMPONENTS videoio)
|
|
|
|
set(optional_opencv_libs ${OpenCV_LIBS})
|
|
|
|
find_package(OpenCV REQUIRED core imgproc highgui features2d)
|
|
|
|
if(OpenCV_FOUND)
|
|
|
|
if(imgcodecs_FOUND)
|
|
|
|
list(APPEND OpenCV_LIBS optional_opencv_libs)
|
|
|
|
endif()
|
|
|
|
include_directories(${OpenCV_INCLUDE_DIRS})
|
|
|
|
list(APPEND 3RDPARTY_LIBS ${OpenCV_LIBS})
|
|
|
|
message(STATUS "opencv include: ${OpenCV_INCLUDE_DIRS}")
|
|
|
|
message(STATUS "opencv libraries: ${OpenCV_LIBS}")
|
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "opencv not found!")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
find_package(MYSQL QUIET)
|
|
|
|
if(MYSQL_FOUND AND ENABLE_MYSQL)
|
|
|
|
message(STATUS "找到mysqlclient库:\"${MYSQL_INCLUDE_DIR}\",ENABLE_MYSQL宏已打开")
|
|
|
|
include_directories(${MYSQL_INCLUDE_DIR})
|
|
|
|
include_directories(${MYSQL_INCLUDE_DIR}/mysql)
|
|
|
|
add_definitions(-DENABLE_MYSQL)
|
|
|
|
list(APPEND 3RDPARTY_LIBS ${MYSQL_LIBRARIES})
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(module_list "")
|
|
|
|
if(build_UserApp)
|
|
|
|
list(APPEND module_list UserApp)
|
|
|
|
include_directories(${PROJECT_SOURCE_DIR}/modules/UserApp/src)
|
|
|
|
install(DIRECTORY UserApp/include/ DESTINATION include)
|
|
|
|
endif()
|
|
|
|
if(build_TcpProxySession)
|
|
|
|
list(APPEND module_list TcpProxySession)
|
|
|
|
include_directories(${PROJECT_SOURCE_DIR}/modules/TcpProxySession/src)
|
|
|
|
install(DIRECTORY TcpProxySession/include/ DESTINATION include)
|
|
|
|
endif()
|
|
|
|
if(build_dataType)
|
|
|
|
list(APPEND module_list dataType)
|
|
|
|
include_directories(${PROJECT_SOURCE_DIR}/modules/dataType/src)
|
|
|
|
install(DIRECTORY dataType/include/ DESTINATION include)
|
|
|
|
endif()
|
|
|
|
if(build_Disposition)
|
|
|
|
list(APPEND module_list Disposition)
|
|
|
|
include_directories(${PROJECT_SOURCE_DIR}/modules/Disposition/src)
|
|
|
|
install(DIRECTORY Disposition/include/ DESTINATION include)
|
|
|
|
endif()
|
|
|
|
if(build_md5)
|
|
|
|
list(APPEND module_list md5)
|
|
|
|
include_directories(${PROJECT_SOURCE_DIR}/modules/md5/src)
|
|
|
|
install(DIRECTORY md5/include/ DESTINATION include)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
include_directories(/usr/local/include/hv)
|
|
|
|
include_directories(${PROJECT_SOURCE_DIR}/3rdparty/)
|
|
|
|
include_directories(${PROJECT_SOURCE_DIR}/3rdparty/rapidjson/include/)
|
|
|
|
|
|
|
|
foreach(module ${module_list})
|
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/${module}/include)
|
|
|
|
file(GLOB_RECURSE module_src ${CMAKE_CURRENT_SOURCE_DIR}/${module}/*.cpp)
|
|
|
|
list(APPEND srcs ${module_src})
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
add_library(models SHARED ${srcs})
|
|
|
|
install(TARGETS models LIBRARY DESTINATION lib)
|
|
|
|
target_link_libraries(models ${3RDPARTY_LIBS} rt dl pthread ZLToolKit hv )
|