function(target_link_libraries_system target) set(libs ${ARGN}) foreach(lib ${libs}) get_target_property(lib_include_dirs ${lib} INTERFACE_INCLUDE_DIRECTORIES) target_include_directories(${target} SYSTEM PRIVATE ${lib_include_dirs}) target_link_libraries(${target} ${lib}) endforeach(lib) endfunction(target_link_libraries_system) file(GLOB SOURCES game_of_life.cpp bootstrap.cpp conversion.cpp argument_parser.cpp game/game.cpp engine/graphics/vector2.cpp randomization/generator.cpp randomization/seed_generator.cpp DI/object_type.cpp) add_executable(${PROJECT_NAME} ${SOURCES}) target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20) target_compile_options( ${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic -Wshadow -Wold-style-cast -Wcast-align -Wno-unused -Wconversion -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Woverloaded-virtual -Wredundant-decls -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default -Wundef -Werror -pedantic -fsanitize=address -fno-exceptions ) target_include_directories(${PROJECT_NAME} PRIVATE .) target_link_libraries_system(${PROJECT_NAME} ctre fmt) target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address)