CPP_FILES := main.cpp
DDD_FILES := $(CPP_FILES:%.cpp=%.d)
OBJ_FILES := $(CPP_FILES:%.cpp=%.o)
EXE_FILES := $(CPP_FILES:%.cpp=%.exe)

all: $(EXE_FILES)

clean: 
	rm -rf $(DDD_FILES)* $(OBJ_FILES) $(EXE_FILES)

main.exe: main.o
main.o:   main.cpp 
main.d:   main.cpp

NINCLUDE_TARGETS := clean          
ifeq ($(strip $(filter $(NINCLUDE_TARGETS),$(MAKECMDGOALS))),)
  -include $(DDD_FILES)
endif

PID := $(shell echo $$$$)
CXX := g++

DFILE_HDR := \
\# DO NOT CHANGE THIS FILE; it was auto-generated by a make process.

# Generate header prerequisites automatically.
# Taken and modified from:
# http://www.gnu.org/software/make/manual/html_chapter/make_4.html#SEC51
$(DDD_FILES):
	@echo -- generating makefile: $@
	@set -e; rm -f $@;                                          \
	echo "$(DFILE_HDR)" > $@;                                   \
	$(CXX) -M $(CXXFLAGS) $< > $@.$(PID);                      \
	sed 's,^.*\.o[ :]*,$(@:%.d=%.o) $@: ,g' < $@.$(PID) >> $@;  \
	rm -f $@.$(PID)

$(EXE_FILES):
	   $(CXX) $(LDFLAGS) $^ -o $@

$(OBJ_FILES):
		$(CXX) -c $(CXXFLAGS) $< -o $@
