2025-02-02 16:26:46 +01:00
|
|
|
# Add .d to Make's recognized suffixes.
|
|
|
|
SUFFIXES += .d
|
|
|
|
|
|
|
|
#We don't need to clean up when we're making these targets
|
|
|
|
NODEPS:=clean tags svn
|
|
|
|
#Find all the C++ files in the src/ directory
|
|
|
|
SOURCES:=$(shell find src/ -name "*.cpp")
|
|
|
|
OBJFILES := $(patsubst src/%.cpp,obj/%.o,$(SOURCES))
|
|
|
|
#These are the dependency files, which make will clean up after it creates them
|
|
|
|
DEPFILES:=$(patsubst %.cpp,%.d,$(SOURCES))
|
|
|
|
|
|
|
|
#Don't create dependencies when we're cleaning, for instance
|
|
|
|
ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS))))
|
|
|
|
#Chances are, these files don't exist. GMake will create them and
|
|
|
|
#clean up automatically afterwards
|
|
|
|
-include $(DEPFILES)
|
|
|
|
endif
|
|
|
|
|
|
|
|
#This is the rule for creating the dependency files
|
|
|
|
src/%.d: src/%.cpp
|
|
|
|
$(CXX) $(CXXFLAGS) -MM -MT '$(patsubst src/%.cpp,obj/%.o,$<)' $< -MF $@
|
|
|
|
|
|
|
|
#This rule does the compilation
|
|
|
|
obj/%.o:
|
|
|
|
@mkdir -p $(dir $@)
|
|
|
|
$(CXX) $(CXXFLAGS) -o $@ -c $<
|
|
|
|
|
|
|
|
main: $(OBJFILES)
|
|
|
|
$(CXX) $(LDFLAGS) $(OBJFILES) $(LOADLIBES) $(LDLIBS) -o main
|
2025-02-02 15:15:14 +01:00
|
|
|
|
|
|
|
clean:
|
2025-02-02 16:26:46 +01:00
|
|
|
rm -rf obj/* $(DEPFILES)
|