cmake_minimum_required(VERSION 3.18...3.26 FATAL_ERROR) project(DataBase VERSION 5.22.0 LANGUAGES CXX) if(NOT DEFINED CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 17) endif() set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) include(configure/CMakeLists.txt) include(test/CMakeLists.txt) configure_file(cmake_config.h.in cmake_config.h @ONLY) set(SOURCES DataBase.cpp DataBaseClass.cpp DatabaseConnectionHandle.cpp DatabaseConnectionPool.cpp DataBaseStateMachine.cpp ClassFactory.cpp main.cpp) set(ADDITIONAL_SOURCES DataBaseUtils.cpp update_starter.cpp) add_executable(Databaseds ${SOURCES} ${ADDITIONAL_SOURCES}) target_include_directories(Databaseds PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries(Databaseds PUBLIC Tango::Tango MySQL::MySQL) if (WIN32 AND (Tango_IS_STATIC OR Tango_FORCE_STATIC)) set_target_properties(Databaseds PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" ) endif() if (MSVC) target_compile_options(Databaseds PUBLIC /W3) else() target_compile_options(Databaseds PUBLIC -Wall -Wextra -D_FORTIFY_SOURCE=2 -O1) endif() if(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang") set_target_properties(Databaseds PROPERTIES LINK_FLAGS "-bind_at_load") elseif(NOT MSVC) target_compile_options(Databaseds PUBLIC -fpie) set_target_properties(Databaseds PROPERTIES LINK_FLAGS "-Wl,-z,now -pie") endif() if(TDB_ENABLE_COVERAGE) target_link_options(Databaseds PUBLIC --coverage) target_compile_options(Databaseds PUBLIC --coverage) endif() install(TARGETS Databaseds RUNTIME DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}") option(TANGO_WARNINGS_AS_ERRORS "Treat compiler warnings as errors" OFF) if(TANGO_WARNINGS_AS_ERRORS) if (MSVC) target_compile_options(Databaseds PUBLIC /WX) else() target_compile_options(Databaseds PUBLIC -Werror -Wformat -Werror=format-security -pedantic) endif() endif()