cmake_minimum_required(VERSION 3.14) project(etms VERSION 1.0.0 DESCRIPTION "Event & Task Management System (ETMS) - Core C++ Component" LANGUAGES CXX ) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) # MSVC UTF-8 support if (MSVC) add_compile_options(/utf-8) endif() # ------ Directory variables ------ set(INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) set(TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests) # ------ Main executable ------ add_executable(${PROJECT_NAME} ${SRC_DIR}/main.cpp ${SRC_DIR}/app.cpp ) target_include_directories(${PROJECT_NAME} PRIVATE ${INCLUDE_DIR}) # ------ Test executable ------ add_executable(${PROJECT_NAME}_test ${TEST_DIR}/basic_test.cpp ${SRC_DIR}/app.cpp ) target_include_directories(${PROJECT_NAME}_test PRIVATE ${INCLUDE_DIR}) # ------ Custom target: run test ------ add_custom_target(check COMMAND ${PROJECT_NAME}_test DEPENDS ${PROJECT_NAME}_test COMMENT "Running unit tests..." )