cmake_minimum_required(VERSION 3.28.3) 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_MULTITHREADED ON) if (WIN32) set(Boost_INCLUDE_DIR ${BOOST_ROOT}) set(Boost_LIBRARY_DIR "${BOOST_ROOT}/stage/lib") endif () find_package(Boost 1.88.0 REQUIRED COMPONENTS filesystem json log system url log_setup) 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 ${CMAKE_SOURCE_DIR}/src/main.cpp ${CMAKE_SOURCE_DIR}/src/helpers/helpers.h ${CMAKE_SOURCE_DIR}/src/helpers/helpers.cpp ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/HandleRequest.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/IController.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/Controller.h ${CMAKE_SOURCE_DIR}/src/session/HttpSession.h ${CMAKE_SOURCE_DIR}/src/session/HttpSession.cpp ${CMAKE_SOURCE_DIR}/src/session/WebsocketSession.h ${CMAKE_SOURCE_DIR}/src/session/WebsocketSession.cpp ${CMAKE_SOURCE_DIR}/src/listener/Listener.h ${CMAKE_SOURCE_DIR}/src/listener/Listener.cpp ${CMAKE_SOURCE_DIR}/src/db/mysql_connector.cpp ${CMAKE_SOURCE_DIR}/src/db/mysql_connector.h ${CMAKE_SOURCE_DIR}/src/DAO/IUserDAO.h ${CMAKE_SOURCE_DIR}/src/dtos/user_dto.h ${CMAKE_SOURCE_DIR}/src/dtos/medication_dto.h ${CMAKE_SOURCE_DIR}/src/DAO/MySQLUserDAO.cpp ${CMAKE_SOURCE_DIR}/src/DAO/MySQLUserDAO.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/IExecutor.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/AuthRegistrationExecutor.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/RootExecutor.h ${CMAKE_SOURCE_DIR}/src/DAO/IAuthDAO.h ${CMAKE_SOURCE_DIR}/src/DAO/MemoryAuthDAO.cpp ${CMAKE_SOURCE_DIR}/src/DAO/MemoryAuthDAO.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/AuthLogoutExecutor.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/AuthLoginExecutor.h ${CMAKE_SOURCE_DIR}/src/exceptions/session_exception.cpp ${CMAKE_SOURCE_DIR}/src/exceptions/session_exception.h ${CMAKE_SOURCE_DIR}/src/log/Log.h ${CMAKE_SOURCE_DIR}/src/log/Log.cpp ${CMAKE_SOURCE_DIR}/tests/fixtures/AuthFixture.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/GetUserMedicationsExecutor.h ${CMAKE_SOURCE_DIR}/src/DAO/IMedicationsDAO.h ${CMAKE_SOURCE_DIR}/src/DAO/MySQLMedicationsDAO.h ${CMAKE_SOURCE_DIR}/src/DAO/MySQLMedicationsDAO.cpp ${CMAKE_SOURCE_DIR}/src/dtos/user_treatment_scheme_dto.h ${CMAKE_SOURCE_DIR}/src/DAO/IUserTreatmentSchemesDAO.h ${CMAKE_SOURCE_DIR}/src/DAO/MySQLUserTreatmentSchemesDAO.cpp ${CMAKE_SOURCE_DIR}/src/DAO/MySQLUserTreatmentSchemesDAO.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/GetUserTreatmentSchemeExecutor.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/GetDiariesExecutor.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/PostDiaryExecutor.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/PutDiaryExecutor.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/DeleteDiaryExecutor.h ${CMAKE_SOURCE_DIR}/src/DAO/IDiariesDAO.h ${CMAKE_SOURCE_DIR}/src/dtos/diary_dto.h ${CMAKE_SOURCE_DIR}/src/DAO/MySQLDiariesDAO.cpp ${CMAKE_SOURCE_DIR}/src/DAO/MySQLDiariesDAO.h ) target_link_libraries(App PRIVATE Boost::boost Boost::json Boost::log Boost::system Boost::filesystem Boost::url Boost::log_setup Threads::Threads mysql::concpp) if (MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") endif () add_executable(HelpersTests ${CMAKE_SOURCE_DIR}/tests/helpers/helpers_TEST.cpp ${CMAKE_SOURCE_DIR}/src/helpers/helpers.h ${CMAKE_SOURCE_DIR}/src/helpers/helpers.cpp) target_link_libraries(HelpersTests PRIVATE Boost::boost Boost::json Boost::log) add_test(HelpersTests HelpersTests) add_executable(ControllerTests ${CMAKE_SOURCE_DIR}/tests/endpoint_handlers/Controller_TEST.cpp ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/IController.h ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/Controller.h) target_link_libraries(ControllerTests PRIVATE Boost::boost) add_test(ControllerTests ControllerTests) add_executable(AuthRegistrationExecutorTests ${CMAKE_SOURCE_DIR}/tests/endpoint_handlers/AuthRegistrationExecutor_TEST.cpp ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/AuthRegistrationExecutor.h ${CMAKE_SOURCE_DIR}/src/exceptions/session_exception.cpp ${CMAKE_SOURCE_DIR}/src/exceptions/session_exception.h ${CMAKE_SOURCE_DIR}/src/helpers/helpers.h ${CMAKE_SOURCE_DIR}/src/helpers/helpers.cpp ${CMAKE_SOURCE_DIR}/src/DAO/MemoryAuthDAO.h ${CMAKE_SOURCE_DIR}/src/DAO/MemoryAuthDAO.cpp ${CMAKE_SOURCE_DIR}/src/DAO/MySQLUserDAO.h ${CMAKE_SOURCE_DIR}/src/DAO/MySQLUserDAO.cpp ${CMAKE_SOURCE_DIR}/src/db/mysql_connector.h ${CMAKE_SOURCE_DIR}/src/db/mysql_connector.cpp ${CMAKE_SOURCE_DIR}/tests/fixtures/AuthFixture.h ${CMAKE_SOURCE_DIR}/tests/fixtures/AuthFixture.cpp ${CMAKE_SOURCE_DIR}/tests/fixtures/fixture_session_initialization_helper.h ${CMAKE_SOURCE_DIR}/tests/fixtures/fixture_session_initialization_helper.cpp) target_link_libraries(AuthRegistrationExecutorTests PRIVATE Boost::boost Boost::json Boost::log Boost::system Boost::filesystem Boost::log_setup Threads::Threads mysql::concpp) add_test(AuthRegistrationExecutorTests AuthRegistrationExecutorTests) add_executable(AuthLoginExecutorTests ${CMAKE_SOURCE_DIR}/tests/endpoint_handlers/AuthLoginExecutor_TEST.cpp ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/AuthRegistrationExecutor.h ${CMAKE_SOURCE_DIR}/src/exceptions/session_exception.cpp ${CMAKE_SOURCE_DIR}/src/exceptions/session_exception.h ${CMAKE_SOURCE_DIR}/src/helpers/helpers.h ${CMAKE_SOURCE_DIR}/src/helpers/helpers.cpp ${CMAKE_SOURCE_DIR}/src/DAO/MySQLUserDAO.h ${CMAKE_SOURCE_DIR}/src/DAO/MySQLUserDAO.cpp ${CMAKE_SOURCE_DIR}/src/DAO/MemoryAuthDAO.h ${CMAKE_SOURCE_DIR}/src/DAO/MemoryAuthDAO.cpp ${CMAKE_SOURCE_DIR}/src/db/mysql_connector.h ${CMAKE_SOURCE_DIR}/src/db/mysql_connector.cpp ${CMAKE_SOURCE_DIR}/tests/fixtures/AuthFixture.h ${CMAKE_SOURCE_DIR}/tests/fixtures/AuthFixture.cpp ${CMAKE_SOURCE_DIR}/tests/fixtures/fixture_session_initialization_helper.h ${CMAKE_SOURCE_DIR}/tests/fixtures/fixture_session_initialization_helper.cpp) target_link_libraries(AuthLoginExecutorTests PRIVATE Boost::boost Boost::json Boost::log Boost::system Boost::filesystem Boost::log_setup Threads::Threads mysql::concpp) add_test(AuthLoginExecutorTests AuthLoginExecutorTests) add_executable(AuthLogoutExecutorTests ${CMAKE_SOURCE_DIR}/tests/endpoint_handlers/AuthLogoutExecutor_TEST.cpp ${CMAKE_SOURCE_DIR}/src/endpoints_handlers/AuthRegistrationExecutor.h ${CMAKE_SOURCE_DIR}/src/exceptions/session_exception.cpp ${CMAKE_SOURCE_DIR}/src/exceptions/session_exception.h ${CMAKE_SOURCE_DIR}/src/helpers/helpers.h ${CMAKE_SOURCE_DIR}/src/helpers/helpers.cpp ${CMAKE_SOURCE_DIR}/src/DAO/MySQLUserDAO.h ${CMAKE_SOURCE_DIR}/src/DAO/MySQLUserDAO.cpp ${CMAKE_SOURCE_DIR}/src/DAO/MemoryAuthDAO.h ${CMAKE_SOURCE_DIR}/src/DAO/MemoryAuthDAO.cpp ${CMAKE_SOURCE_DIR}/src/db/mysql_connector.h ${CMAKE_SOURCE_DIR}/src/db/mysql_connector.cpp ${CMAKE_SOURCE_DIR}/tests/fixtures/AuthFixture.h ${CMAKE_SOURCE_DIR}/tests/fixtures/AuthFixture.cpp ${CMAKE_SOURCE_DIR}/tests/fixtures/fixture_session_initialization_helper.h ${CMAKE_SOURCE_DIR}/tests/fixtures/fixture_session_initialization_helper.cpp) target_link_libraries(AuthLogoutExecutorTests PRIVATE Boost::boost Boost::json Boost::log Boost::system Boost::filesystem Boost::log_setup Threads::Threads mysql::concpp) add_test(AuthLogoutExecutorTests AuthLogoutExecutorTests) 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) target_compile_definitions(AuthLoginExecutorTests PRIVATE WIN32_LEAN_AND_MEAN NOMINMAX) target_compile_definitions(AuthLogoutExecutorTests PRIVATE WIN32_LEAN_AND_MEAN NOMINMAX) endif ()