cmake_minimum_required(VERSION 3.20)
project(HelloSum LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)  # plain -std=c++20, not the gnu++20 dialect

add_executable(sum src/sum.cpp)

# Warnings on: /W4 for MSVC, -Wall -Wextra -Wpedantic for GCC and Clang.
if(MSVC)
  target_compile_options(sum PRIVATE /W4)
else()
  target_compile_options(sum PRIVATE -Wall -Wextra -Wpedantic)
endif()

enable_testing()
add_test(NAME prints_greeting COMMAND sum)
set_tests_properties(prints_greeting PROPERTIES PASS_REGULAR_EXPRESSION "Hello from C\\+\\+!")
add_test(NAME prints_sum COMMAND sum)
set_tests_properties(prints_sum PROPERTIES PASS_REGULAR_EXPRESSION "1 \\+ 2 \\+ \\.\\.\\. \\+ 10 = 55")
