cmake_minimum_required(VERSION 3.15)
project(Tutorial1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Find dependencies
find_package(spdlog CONFIG REQUIRED)
find_package(GTest CONFIG REQUIRED)

# Create a library for our application code
# This allows us to share the code between the main app and the tests
add_library(MyLib src/calculator.cpp src/calculator.h)
target_include_directories(MyLib PUBLIC src)

# Define our main executable
add_executable(App src/main.cpp)

# Link our App against spdlog and our library
target_link_libraries(App PRIVATE spdlog::spdlog MyLib)

# Enable testing with CTest (CMake's testing framework)
enable_testing()

# Define the test executable
add_executable(RunTests test/test_calculator.cpp)

# Link our test executable against GTest and our library
target_link_libraries(RunTests PRIVATE GTest::gtest_main MyLib)

# Add the test to CTest
include(GoogleTest)
gtest_add_tests(TARGET RunTests)