day1.out: out/types.o day1.cpp g++-10 -std=c++2a $(flags) day1.cpp out/types.o -o $@ day2.out: out/types.o day2.cpp g++-10 -std=c++2a $(flags) day2.cpp out/types.o -o $@ day3.out: out/types.o day3.cpp g++-10 -std=c++2a $(flags) day3.cpp out/types.o -o $@ day4.out: out/types.o day4.cpp g++-10 -std=c++2a $(flags) day4.cpp out/types.o -o $@ day5.out: out/types.o day5.cpp g++-10 -std=c++2a $(flags) day5.cpp out/types.o -o $@ out/types.o: types.hpp types.cpp mkdir -p out/ g++-10 -std=c++2a $(flags) -c types.cpp -o $@ .PHONY: clean clean: rm out/* day*.out day*.output