cmake_minimum_required(VERSION 3.29.8) project(UpAndDown) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) if(POLICY CMP0167) cmake_policy(SET CMP0167 OLD) endif() set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_MULTITHREADED ON) set(Boost_INCLUDE_DIR ${BOOST_ROOT}) set(Boost_LIBRARY_DIR "${BOOST_ROOT}/stage/lib") find_package(Boost 1.88.0 REQUIRED COMPONENTS filesystem json log) if (Boost_FOUND) include_directories(${Boost_INCLUDE_DIR}) endif () find_package(mysql-concpp REQUIRED) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) add_executable(App ./src/main.cpp ./src/helpers/helpers.h ./src/helpers/helpers.cpp ./src/endpoints_handlers/HandleRequest.h ./src/endpoints_handlers/IController.h ./src/endpoints_handlers/Controller.h ./src/session/HttpSession.h ./src/session/HttpSession.cpp ./src/session/WebsocketSession.h ./src/session/WebsocketSession.cpp ./src/listener/Listener.h ./src/listener/Listener.cpp ./src/db/mysql_connector.cpp ./src/db/mysql_connector.h ./src/DAO/IUserDAO.h ./src/entities/user.h ./src/DAO/MySQLUserDAO.cpp ./src/DAO/MySQLUserDAO.h ./src/endpoints_handlers/IExecutor.h ./src/endpoints_handlers/AuthRegistrationExecutor.h ./src/endpoints_handlers/RootExecutor.h ./src/DAO/IAuthDAO.h ./src/DAO/MemoryAuthDAO.cpp ./src/DAO/MemoryAuthDAO.h ./src/endpoints_handlers/AuthLogoutExecutor.h ./src/exceptions/session_exception.cpp ./src/exceptions/session_exception.h ) target_link_libraries(App PRIVATE Boost::boost Boost::json Threads::Threads mysql::concpp) if (MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") endif () add_executable(HelpersTests ./tests/helpers/helpers_TEST.cpp ./src/helpers/helpers.h ./src/helpers/helpers.cpp) target_link_libraries(HelpersTests PRIVATE Boost::boost) add_test(HelpersTests HelpersTests) add_executable(ControllerTests ./tests/endpoint_handlers/Controller_TEST.cpp ./src/endpoints_handlers/IController.h ./src/endpoints_handlers/Controller.h) target_link_libraries(ControllerTests PRIVATE Boost::boost) add_test(ControllerTests ControllerTests) add_executable(AuthRegistrationExecutorTests ./tests/endpoint_handlers/AuthRegistrationExecutor_TEST.cpp ./src/endpoints_handlers/AuthRegistrationExecutor.h) target_link_libraries(AuthRegistrationExecutorTests PRIVATE Boost::boost Boost::json mysql::concpp) add_test(AuthRegistrationExecutorTests AuthRegistrationExecutorTests) if (WIN32) target_compile_definitions(App PRIVATE WIN32_LEAN_AND_MEAN NOMINMAX) target_compile_definitions(HelpersTests PRIVATE WIN32_LEAN_AND_MEAN NOMINMAX) target_compile_definitions(ControllerTests PRIVATE WIN32_LEAN_AND_MEAN NOMINMAX) target_compile_definitions(AuthRegistrationExecutorTests PRIVATE WIN32_LEAN_AND_MEAN NOMINMAX) endif()