cmake_minimum_required(VERSION 3.16) project(design_boundaries LANGUAGES CXX) include(CTest) add_executable(simulation_demo demo.cpp) add_executable(simulation_tests tests.cpp) add_executable(identity_demo identity_demo.cpp) add_executable(identity_tests identity_tests.cpp) add_executable(ecs_demo ecs_demo.cpp) add_executable(ecs_tests ecs_tests.cpp) add_executable(generation_demo generation_demo.cpp) add_executable(generation_tests generation_tests.cpp) add_executable(deferred_demo deferred_demo.cpp) add_executable(deferred_tests deferred_tests.cpp) add_executable(storage_demo storage_demo.cpp) add_executable(storage_tests storage_tests.cpp) foreach(target simulation_demo simulation_tests identity_demo identity_tests ecs_demo ecs_tests generation_demo generation_tests deferred_demo deferred_tests storage_demo storage_tests) target_compile_features(${target} PRIVATE cxx_std_17) set_target_properties(${target} PROPERTIES CXX_EXTENSIONS OFF) if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") target_compile_options(${target} PRIVATE -Wall -Wextra -Wpedantic -Werror) endif() endforeach() if(BUILD_TESTING) add_test(NAME simulation_contract COMMAND simulation_tests) add_test(NAME entity_identity_contract COMMAND identity_tests) add_test(NAME minimal_ecs_contract COMMAND ecs_tests) add_test(NAME generational_ecs_contract COMMAND generation_tests) add_test(NAME deferred_ecs_contract COMMAND deferred_tests) add_test(NAME sparse_storage_contract COMMAND storage_tests) endif()