cmake_minimum_required(VERSION 3.14) project(CMS VERSION 1.0.0 DESCRIPTION "Centralized & Distributed Combat Mission Planning System" LANGUAGES CXX ) # ── C++ Standard ────────────────────────────────────────────────────────────── 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() # ── Project Include Directory ────────────────────────────────────────────────── set(CMS_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include") # ── Main Executable ─────────────────────────────────────────────────────────── add_executable(cms_main src/main.cpp src/app.cpp ) target_include_directories(cms_main PRIVATE ${CMS_INCLUDE_DIR}) # ── Test Executable ─────────────────────────────────────────────────────────── add_executable(cms_test tests/basic_test.cpp src/app.cpp ) target_include_directories(cms_test PRIVATE ${CMS_INCLUDE_DIR}) # ── Compiler Warnings ───────────────────────────────────────────────────────── if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") target_compile_options(cms_main PRIVATE -Wall -Wextra -Wpedantic) target_compile_options(cms_test PRIVATE -Wall -Wextra -Wpedantic) elseif (MSVC) target_compile_options(cms_main PRIVATE /W4) target_compile_options(cms_test PRIVATE /W4) endif()