cmake_minimum_required(VERSION 4.3.4) project(LearnCPP) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) # where to put binaries set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # find all .cpp files inside src directory file(GLOB_RECURSE SOURCES "src/*.cpp") foreach(SOURCE_FILE ${SOURCES}) # get paths file(RELATIVE_PATH REL_PATH ${CMAKE_SOURCE_DIR}/src ${SOURCE_FILE}) # form target names (substitute '/' to '_', remove '.cpp') string(REPLACE "/" "_" TARGET_NAME ${REL_PATH}) string(REPLACE ".cpp" "" TARGET_NAME ${TARGET_NAME}) add_executable(${TARGET_NAME} ${SOURCE_FILE}) target_compile_options(${TARGET_NAME} PRIVATE -Wall -Weffc++ -Wextra -Wpedantic ) # link libs here endforeach()