cmake_minimum_required(VERSION 4.1) project( clox LANGUAGES C ) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) add_executable( ${PROJECT_NAME} main.c vm.c chunk.c memory.c debug.c value.c compiler.c scanner.c object.c table.c ) set_target_properties( ${PROJECT_NAME} PROPERTIES C_STANDARD 23 C_STANDARD_REQUIRED ON C_EXTENSIONS OFF ) target_compile_options( ${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic ) target_compile_definitions( ${PROJECT_NAME} PRIVATE $<$,$>:DEBUG_PRINT_CODE> $<$,$>:DEBUG_TRACE_EXECUTION> $<$,$>:DEBUG_STRESS_GC> $<$,$>:DEBUG_LOG_GC> ) target_compile_definitions( ${PROJECT_NAME} PRIVATE $<$:NAN_BOXING> )