ContentsFoundations to FrontierBezhig

graduate_code/CMakeLists.txt

All lab code. Download this file.

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)