cmake_minimum_required(VERSION 3.17) project(raytracer) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") find_package(GLM REQUIRED) find_package(SDL2 REQUIRED) add_subdirectory(extern) add_executable(raytracer) target_sources(raytracer PRIVATE src/main.cpp PRIVATE FILE_SET CXX_MODULES FILES src/aabb.cpp src/camera.cpp src/glm.cpp src/image.cpp src/intersections.cpp src/lighting.cpp src/octree.cpp src/ray.cpp src/scene.cpp) target_include_directories(raytracer PUBLIC include PRIVATE ${GLM_INCLUDE_DIR}) target_link_libraries(raytracer PUBLIC stb SDL2::Main imgui glad tinyobjloader) set_target_properties(raytracer PROPERTIES CXX_STANDARD 23 CXX_STANDARD_REQUIRED YES CXX_EXTENSIONS NO CXX_SCAN_FOR_MODULES ON # For main.cpp, which is not in the module set technically )