06-chess/assignment/makefile
github-classroom[bot] fd154a8ed5
Initial commit
2024-10-24 13:14:23 +00:00

74 lines
1.6 KiB
Makefile

CC = g++
CCLINK = g++
LIBS =
CCOPTIONS = -Wall -pedantic -g
LDOPTIONS =
HDRS = chess.h chess_printer.h general.h test_chess.h shortcut.h
TEST = test_chess
PROGRAM = chess
TESTOBJECT = chess_test_driver.o
MAINOBJECT = chess_main_driver.o
OBJS = shortcut.o chess.o test_chess.o chess_printer.o
DOXY = /Applications/Doxygen/Doxygen.app/Contents/Resources/doxygen
all: $(PROGRAM)
./$(PROGRAM)
$(TEST): $(OBJS) $(TESTOBJECT)
$(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(TESTOBJECT)
$(PROGRAM): $(OBJS) $(MAINOBJECT)
$(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(MAINOBJECT)
.PHONY: clean cleanall doxy test setsample setassignment definesample defineassignment assignmentfolder
clean:
rm -f $(PROGRAM) $(TEST) $(TESTOBJECT) $(MAINOBJECT) $(OBJS)
cleanall:
rm -f $(PROGRAM) $(OBJS) index.html
rm -R html
doxy:
$(DOXY)
ln -s html/index.html index.html
test: $(TEST)
./$(TEST)
#sets project as sample solution
setsample:
cp chess.c.sample chess.c
cp chess.h.sample chess.h
#sets project as assignment
setassignment:
cp chess.c.assignment chess.c
cp chess.h.assignment chess.h
# defines current state of project as sample solution
definesample:
cp chess.c chess.c.sample
cp chess.h chess.h.sample
# defines current sate of project as assignment
defineassignment:
cp chess.c chess.c.assignment
cp chess.h chess.h.assignment
# creates a folder which can serve as a publishable assignment
assignmentfolder:
make setsample
make doxy
make setassignment
mkdir ../assignment
cp -R * ../assignment
rm ../assignment/*.sample
rm ../assignment/*.assignment
make cleanall
%.o: %.c $(HDRS)
$(CC) $(CCOPTIONS) -c $<