cmake_minimum_required(VERSION 3.24) project(mono) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) file(GLOB_RECURSE SOURCE_FILES src/*.cpp src/*.hpp) add_executable(${PROJECT_NAME} ${SOURCE_FILES}) target_include_directories(${PROJECT_NAME} PRIVATE src) if (MSVC) target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX) else() target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic -Werror -Wshadow -Wnon-virtual-dtor -Wold-style-cast -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wnull-dereference -Wdouble-promotion -Wformat=2 -Wimplicit-fallthrough -Wmisleading-indentation ) endif() option(PERFT_DIVIDE "Enable perft divide output" OFF) if (PERFT_DIVIDE) target_compile_definitions(${PROJECT_NAME} PRIVATE PERFT_DIVIDE) endif() if (NOT MSVC AND CMAKE_BUILD_TYPE STREQUAL "Debug") target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=address,undefined -fno-omit-frame-pointer ) target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address,undefined ) endif()