66 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
#  +-------------+---------+-----------------------+
 | 
						|
#  | John Breaux | jab0910 | JohnBreaux@my.unt.edu |
 | 
						|
#  +-------------+---------+-----------------------+
 | 
						|
#  |    Created 2022-04-04    Edited 2022-04-22    |
 | 
						|
#  +-----------------------------------------------+
 | 
						|
 | 
						|
# ---------- Variables listed below --------- #
 | 
						|
 | 
						|
# Executable
 | 
						|
TARGET := main.out
 | 
						|
 | 
						|
# Paths to source, include, dependency, and object files
 | 
						|
SPATH = src
 | 
						|
IPATH = inc
 | 
						|
DPATH = dep
 | 
						|
OPATH = obj
 | 
						|
 | 
						|
# File type of source file
 | 
						|
STYPE = cpp
 | 
						|
 | 
						|
VPATH = $(SPATH) $(IPATH) $(DPATH) $(OPATH)
 | 
						|
 | 
						|
# compiler and compiler flags
 | 
						|
CC = g++
 | 
						|
CFLAGS = -I$(IPATH) -std=c++11 -Os
 | 
						|
 | 
						|
# list of object files
 | 
						|
SOURCES = $(wildcard $(SPATH)/*.$(STYPE))
 | 
						|
OBJECTS = $(addprefix $(OPATH)/,$(notdir $(SOURCES:.$(STYPE)=.o)))
 | 
						|
 | 
						|
 | 
						|
# ----------- Targets listed below ---------- #
 | 
						|
# Some targets aren't real
 | 
						|
.PHONY: all clean run dump
 | 
						|
# Don't autodelete object files:
 | 
						|
.PRECIOUS: $(OPATH)/%.o
 | 
						|
 | 
						|
all: $(DPATH) $(OPATH) $(TARGET)
 | 
						|
 | 
						|
dump:
 | 
						|
	@echo SOURCES: $(SOURCES)
 | 
						|
	@echo OBJECTS: $(OBJECTS)
 | 
						|
	@echo TARGET:  $(TARGET)
 | 
						|
	@echo VPATH:   $(VPATH)
 | 
						|
 | 
						|
clean:
 | 
						|
	-rm $(TARGET)
 | 
						|
	-rm -r dep obj
 | 
						|
 | 
						|
run:
 | 
						|
	-$(addprefix ./,$(addsuffix ;,$(TARGET)))
 | 
						|
 | 
						|
$(DPATH) $(OPATH):
 | 
						|
	mkdir -p $@
 | 
						|
 | 
						|
# Make the executable(s)
 | 
						|
%.out: $(OBJECTS)
 | 
						|
	$(CC) $(CFLAGS) -o "$@" $^
 | 
						|
# Make the object and dependency files
 | 
						|
$(OPATH)/%.o: $(SPATH)/%.$(STYPE)
 | 
						|
	$(CC) $(CFLAGS) -MMD -MF "$(DPATH)/$(@F:.o=.d)" -o "$@" -c "$<"
 | 
						|
 | 
						|
# --------- Inclusions listed below --------- #
 | 
						|
# use dependencies when rebuilding
 | 
						|
-include $(wildcard $(DPATH)/*.d)
 |