cmake_minimum_required(VERSION 3.20) project(GraduatePractice LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) option(ENABLE_SANITIZERS "Address and undefined-behavior checks" OFF) set(MATRIX_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cpp" CACHE PATH "Matrix header location") add_executable(matrix_test cpp/test_matrix.cpp) add_executable(matrix_benchmark cpp/benchmark.cpp) foreach(target matrix_test matrix_benchmark) target_include_directories(${target} PRIVATE ${MATRIX_INCLUDE_DIR}) if(MSVC) target_compile_options(${target} PRIVATE /W4 /permissive-) else() target_compile_options(${target} PRIVATE -Wall -Wextra -Wpedantic -Wconversion -Wshadow) if(ENABLE_SANITIZERS) target_compile_options(${target} PRIVATE -fsanitize=address,undefined -fno-omit-frame-pointer) target_link_options(${target} PRIVATE -fsanitize=address,undefined) endif() endif() endforeach() enable_testing() add_test(NAME matrix COMMAND matrix_test) set_tests_properties(matrix PROPERTIES TIMEOUT 30)