25 lines
974 B
CMake
25 lines
974 B
CMake
cmake_minimum_required(VERSION 3.21)
|
|
project(advent-of-code)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
file(GLOB years LIST_DIRECTORIES true RELATIVE "${CMAKE_SOURCE_DIR}" CONFIGURE_DEPENDS
|
|
"20[1-9][0-9]")
|
|
message(STATUS "Years to examine: ${years}")
|
|
foreach (year IN LISTS years)
|
|
file(GLOB puzzles RELATIVE "${CMAKE_SOURCE_DIR}" CONFIGURE_DEPENDS "${year}/puzzle-*.cc")
|
|
foreach (puzzle IN LISTS puzzles)
|
|
string(REGEX REPLACE "^.*puzzle-(.*)\\.cc" "puzzle-${year}-\\1" puzzle_name "${puzzle}")
|
|
string(REGEX REPLACE "^.*puzzle-(.*)\\.cc"
|
|
"${CMAKE_SOURCE_DIR}/${year}/puzzle-\\1.CMakeLists.txt" sub_cmake_lists "${puzzle}")
|
|
message(STATUS "Puzzle: ${puzzle_name} - source ${puzzle}")
|
|
add_executable("${puzzle_name}" "${puzzle}")
|
|
if (EXISTS "${sub_cmake_lists}")
|
|
include("${sub_cmake_lists}")
|
|
endif ()
|
|
endforeach ()
|
|
endforeach ()
|