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 ()