Consider changing the '$(bin)' rule:
out/%: %.c
$(CC) -Iincludes/ -Wall $< -o $@
The existing rule indicate that each program depends on ALL source files, and that each program can be built by compiling the ($<) FIRST source file. The revised rule indicate that echh programs depends on the .c with the same name
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…