﻿cmake_minimum_required(VERSION 3.10)

project(TestJenkins VERSION 1.0)

# C++ Standard
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# Enable testing
enable_testing()

# -----------------------------------------------------------------------------
# Person library
# -----------------------------------------------------------------------------

add_library(Person
    src/Person.cpp
)

target_include_directories(Person
    PUBLIC
        ${CMAKE_CURRENT_SOURCE_DIR}/src
)

# -----------------------------------------------------------------------------
# Main executable
# -----------------------------------------------------------------------------

add_executable(TestJenkins
    src/TestJenkins.cpp
)

target_link_libraries(TestJenkins
    PRIVATE
        Person
)

# -----------------------------------------------------------------------------
# GoogleTest
# -----------------------------------------------------------------------------

include(FetchContent)

FetchContent_Declare(
    googletest
    URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
)

FetchContent_MakeAvailable(googletest)

add_executable(UT_Person
    tests/UT_Person.cpp
)

target_link_libraries(UT_Person
    PRIVATE
        Person
        GTest::gtest
        GTest::gtest_main
)

include(GoogleTest)
gtest_discover_tests(UT_Person)

# Optional: place executables in a common output folder
set_target_properties(TestJenkins UT_Person PROPERTIES
    RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
