cmake_minimum_required(VERSION 3.10)

# Modify only these if one source file!
project(CppProducerConsumer)
set(CURRENT_PROJECT_CODE_NAME producerconsumer)
set(FILE_EXT cpp)
# End

set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED True)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# We want all the warnings and as errors enabled
if (MSVC)
    # warning level 4 and all warnings as errors
    add_compile_options(/W4 /WX)
else()
    # lots of warnings and all warnings as errors
    add_compile_options(-Wall -Wextra -pedantic -Werror)

    set(THREADS_PREFER_PTHREAD_FLAG ON)
    find_package(Threads REQUIRED)
    list(APPEND EXTRA_LIBS "Threads::Threads")
endif()

add_executable(${CMAKE_PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/${CURRENT_PROJECT_CODE_NAME}.${FILE_EXT})

target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC
					    ${EXTRA_INCLUDES}
						)

target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC 
						${EXTRA_LIBS}
						)
						

