cmake_minimum_required(VERSION 3.27) project(CalculatorChallenge CXX) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_EXTENSIONS ON) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") INCLUDE(FetchContent) FetchContent_Declare( fmtformat GIT_REPOSITORY https://github.com/fmtlib/fmt GIT_TAG 10.2.1 ) FetchContent_MakeAvailable(fmtformat) FetchContent_Declare( Catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2.git GIT_TAG v3.5.3 ) FetchContent_MakeAvailable(Catch2) list(APPEND CMAKE_MODULE_PATH ${catch2_SOURCE_DIR}/extras) include(CTest) include(Catch) if(APPLE) set(CMAKE_C_COMPILER /opt/homebrew/Cellar/llvm@16/16.0.6/bin/clang) set(CMAKE_CXX_COMPILER /opt/homebrew/Cellar/llvm@16/16.0.6/bin/clang++) endif() SET(CALCULATOR_CHALLENGE_SOURCES Calculator.cpp CalculatorCli.cpp utils.cpp ) add_executable(calculator-challege main.cpp ${CALCULATOR_CHALLENGE_SOURCES} ) target_link_libraries(calculator-challege PRIVATE fmt::fmt) add_executable(calculator-challege-tests CalculatorTests.cpp BinaryOperatorFactoryTests.cpp CalculatorCliTests.cpp ${CALCULATOR_CHALLENGE_SOURCES} ) target_link_libraries(calculator-challege-tests PRIVATE Catch2::Catch2WithMain fmt::fmt) catch_discover_tests(calculator-challege-tests)