cmake_minimum_required(VERSION 4.0) project(repo-lens VERSION 1.0.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED true) set(CMAKE_CXX_EXTENSIONS OFF) # Recoverable failures use explicit status returns throughout the project. if(MSVC) string(REGEX REPLACE "/EH[a-zA-Z+-]+" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") add_compile_options(/EHs-c-) add_compile_definitions(_HAS_EXCEPTIONS=0) else() add_compile_options(-fno-exceptions) endif() set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Generate compile_commands.json with supported generators") set_property(GLOBAL PROPERTY USE_FOLDERS ON) OPTION(ENABLE_TESTS "Enable Unit Tests" ON) OPTION(ENABLE_ALL_REASONABLE_WARNINGS "Enable all possible reasonable warnings" ON ) OPTION(ENABLE_WARNINGS_AS_ERRORS "Warnings are treated as Errors" ON) OPTION(ENABLE_STATIC_ANALYSIS "Enable Static Analysis Tools" ON) OPTION(ENABLE_SANITIZERS "Enable Sanitizer Tools" OFF) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) include(compilerwarnings) include(sanitizers) include(staticanalysis) # @ai-bookmark OPTIONAL_TEST_DEPENDENCY_BOUNDARY # Keep dependency downloads inside the optional test path; the application builds offline. if (ENABLE_TESTS) message("-- Unit Testing Enabled") enable_testing() add_subdirectory(test) endif() add_subdirectory(src)