middleware_agent/CMakeLists.txt

138 lines
3.8 KiB
CMake

CMAKE_MINIMUM_REQUIRED(VERSION 3.10 FATAL_ERROR)
INCLUDE(CMakeDependentOption)
OPTION(USED_HTTP_SVR "Build-in http(s) server support" OFF)
OPTION(USED_HTTP_CLIENT "Build-in http(s) client(GET/POST ...) support" ON)
OPTION(USED_JSON_VALIDATE "Support json protocol field validate" OFF)
OPTION(BUILD_TESTING "Enable tests" OFF)
# 数据库开关
OPTION(USED_REDIS "Add redis database support for agent" OFF)
OPTION(USED_MYSQL "Add mysql database support for agent" OFF)
OPTION(USED_SQLITE "Add sqlite3 database support for agent" ON)
OPTION(USED_SQLITE_CRYPTO "Sqlite3 database support crypto" OFF)
LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/depend)
IF (BUILD_TESTING)
INCLUDE(doctest_framework)
ENDIF ()
INCLUDE(system_libs)
SET(AGENT_VERSION "0.1.0")
PROJECT(agent VERSION "${AGENT_VERSION}")
SET(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig")
SET(URI_HOME "${CMAKE_SOURCE_DIR}/libs")
SET(VERSION_GIT_TAG "")
SET(VERSION_GIT_HASH "")
SET(VERSION_GIT_HASH_SHORT "")
SET(VERSION_GIT_BRANCH "")
FIND_PACKAGE(Git QUIET)
IF (GIT_FOUND)
EXECUTE_PROCESS(
COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
OUTPUT_VARIABLE VERSION_GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
EXECUTE_PROCESS(
COMMAND ${GIT_EXECUTABLE} rev-parse --short=8 HEAD
OUTPUT_VARIABLE VERSION_GIT_HASH_SHORT
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
EXECUTE_PROCESS(
COMMAND ${GIT_EXECUTABLE} symbolic-ref --short -q HEAD
OUTPUT_VARIABLE VERSION_GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
EXECUTE_PROCESS(
COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty=-dev
OUTPUT_VARIABLE VERSION_GIT_TAG
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
ENDIF ()
IF ("${VERSION_GIT_TAG}" STREQUAL "")
STRING(TIMESTAMP COMPILE_TIME %Y-%m-%d_%H:%M:%S)
SET(VERSION_GIT_TAG ${COMPILE_TIME})
ELSE ()
SET(VERSION_GIT_TAG ${VERSION_GIT_TAG})
ENDIF ()
CONFIGURE_FILE(prj_config.h.in prj_config.h)
MESSAGE("Git Tag: " ${VERSION_GIT_TAG})
# 判断依赖库是否存在
FIND_PACKAGE(PkgConfig)
SET(COMMON_LIBS "")
IF (${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.28)
CMAKE_POLICY(SET CMP0135 OLD)
ENDIF ()
INCLUDE(./depend/third_libs.cmake)
IF (USED_JSON_VALIDATE)
LIST(APPEND COMMON_DEFINE "-DJSON_SCHEMA_ON")
ENDIF ()
IF (USED_HTTP_SVR)
LIST(APPEND COMMON_DEFINE "-DHTTPSERVER_ON")
MESSAGE("++ Select Option USED_HTTP_SVR")
ELSE ()
MESSAGE("-- Unselect Option USED_HTTP_SVR")
ENDIF ()
IF (USED_HTTP_CLIENT)
LIST(APPEND COMMON_DEFINE "-DHTTPCLIENT_ON")
MESSAGE("++ Select Option USED_HTTP_CLIENT")
ELSE ()
MESSAGE("-- Unselect Option USED_HTTP_CLIENT")
ENDIF ()
IF (USED_SQLITE)
MESSAGE("++ Select Option USED_SQLITE")
LIST(APPEND COMMON_DEFINE "-DSQLITE_ON")
ELSE ()
MESSAGE("-- Unselect Option USED_SQLITE")
ENDIF ()
IF (USED_MYSQL)
MESSAGE("++ Select Option USED_MYSQL")
LIST(APPEND COMMON_DEFINE "-DUSED_MYSQL")
ELSE ()
MESSAGE("-- Unselect Option USED_MYSQL")
ENDIF ()
IF (USED_REDIS)
MESSAGE("++ Select Option USED_REDIS")
LIST(APPEND COMMON_DEFINE "-DUSED_REDIS")
ELSE ()
MESSAGE("-- Unselect Option USED_REDIS")
ENDIF ()
IF (USED_SQLITE_CRYPTO)
LIST(APPEND COMMON_DEFINE "-DSQLITE_CRYPTO_ON")
MESSAGE("++ Select Option USED_SQLITE_CRYPTO")
ELSE ()
MESSAGE("-- Unselect Option USED_SQLITE_CRYPTO")
ENDIF ()
ADD_SUBDIRECTORY(srcs)
ADD_SUBDIRECTORY(srcs/libs)
IF (BUILD_TESTING)
ADD_SUBDIRECTORY(unit_test)
ENDIF ()