cmake_minimum_required(VERSION 3.29.8) project(UpAndDown) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_definitions(-D_WIN32_WINNT=0x0602) 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 system filesystem) 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/endpoints_handlers/AuthLoginExecutor.h ./src/exceptions/session_exception.cpp ./src/exceptions/session_exception.h src/log/Log.h src/log/Log.cpp ) target_link_libraries(App PRIVATE Boost::boost Boost::json Boost::log Boost::system Boost::filesystem 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 Boost::json Boost::log) 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 ./src/exceptions/session_exception.cpp ./src/exceptions/session_exception.h ./src/helpers/helpers.h ./src/helpers/helpers.cpp ./src/DAO/MySQLUserDAO.h ./src/DAO/MySQLUserDAO.cpp ./src/db/mysql_connector.h ./src/db/mysql_connector.cpp) target_link_libraries(AuthRegistrationExecutorTests PRIVATE Boost::boost Boost::json Boost::log Boost::system Boost::filesystem Threads::Threads mysql::concpp) add_test(AuthRegistrationExecutorTests AuthRegistrationExecutorTests) add_executable(AuthLoginExecutorTests ./tests/endpoint_handlers/AuthLoginExecutor_TEST.cpp ./src/endpoints_handlers/AuthRegistrationExecutor.h ./src/exceptions/session_exception.cpp ./src/exceptions/session_exception.h ./src/helpers/helpers.h ./src/helpers/helpers.cpp ./src/DAO/MySQLUserDAO.h ./src/DAO/MySQLUserDAO.cpp ./src/DAO/MemoryAuthDAO.h ./src/DAO/MemoryAuthDAO.cpp ./src/db/mysql_connector.h ./src/db/mysql_connector.cpp) target_link_libraries(AuthLoginExecutorTests PRIVATE Boost::boost Boost::json Boost::log Boost::system Boost::filesystem Threads::Threads mysql::concpp) add_test(AuthLoginExecutorTests AuthLoginExecutorTests) 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 ()