summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
blob: d37d042f0922bee0b1e222b68bf48232df03e208 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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()