Overhaul makefile, add include guards
This commit is contained in:
parent
40f18a04b1
commit
2698f7f60b
2 changed files with 56 additions and 6 deletions
55
Makefile
55
Makefile
|
@ -1,24 +1,69 @@
|
||||||
TARGET = L1A
|
TARGET = L1A
|
||||||
SRC_FILES = main.cpp math.cpp
|
SRC_FILES = main.cpp math.cpp
|
||||||
|
|
||||||
# NO EDITS BELOW THIS LINE
|
# Tyler's custom makefile extensions
|
||||||
|
.DEFAULT_GOAL := all # Necessary so `make` doesn't run the "pack" target, as it is declared before "all"
|
||||||
|
.PHONY: pack clean-run c run
|
||||||
|
|
||||||
|
## Adds only the necessary files for build into a .tar.gz file, named appropriately
|
||||||
|
ARCHIVED_FILES = Makefile $(SRC_FILES) $(SRC_FILES:.cpp=.h) $(SRC_FILES:.cpp=.hpp)
|
||||||
|
pack:
|
||||||
|
tar --ignore-failed-read -czvf $(TARGET).tar.gz $(shell echo $(ARCHIVED_FILES) | xargs ls -d 2>/dev/null)
|
||||||
|
|
||||||
|
## Runs the pack target and then attempts to build & run the program to make sure it functions correctly
|
||||||
|
pack-test: pack
|
||||||
|
$(eval TMP := $(shell mktemp -d))
|
||||||
|
tar -xvzf $(TARGET).tar.gz --directory $(TMP)
|
||||||
|
make -C $(TMP)
|
||||||
|
$(TMP)/$(TARGET)
|
||||||
|
rm -rf $(TMP)
|
||||||
|
|
||||||
|
## An extension of the clean command that is shorter to type and removes a potential .tar.gz file
|
||||||
|
c: clean
|
||||||
|
$(DEL) -f $(TARGET).tar.gz
|
||||||
|
|
||||||
|
## Simply builds and then executes the program
|
||||||
|
run: all
|
||||||
|
./$(TARGET)
|
||||||
|
|
||||||
|
# NO EDITS NEEDED BELOW THIS LINE
|
||||||
|
|
||||||
CXX = g++
|
CXX = g++
|
||||||
|
CXXFLAGS = -O2
|
||||||
|
CXXFLAGS_DEBUG = -g
|
||||||
|
CXXFLAGS_WARN = -Wall -Wextra -Wunreachable-code -Wshadow -Wpedantic
|
||||||
|
CPPVERSION = -std=c++17
|
||||||
|
|
||||||
OBJECTS = $(SRC_FILES:.cpp=.o)
|
OBJECTS = $(SRC_FILES:.cpp=.o)
|
||||||
|
|
||||||
ifeq ($(shell echo "Windows"), "Windows")
|
ifeq ($(shell echo "Windows"), "Windows")
|
||||||
TARGET := $(TARGET).exe
|
TARGET := $(TARGET).exe
|
||||||
DEL = del
|
DEL = del
|
||||||
|
Q =
|
||||||
else
|
else
|
||||||
DEL = rm -f
|
DEL = rm -f
|
||||||
|
Q = "
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: $(TARGET)
|
all: $(TARGET)
|
||||||
|
|
||||||
$(TARGET): $(OBJECTS)
|
$(TARGET): $(OBJECTS)
|
||||||
$(CXX) -std=c++17 -o $@ $^
|
$(CXX) -o $@ $^
|
||||||
|
|
||||||
%.o: %.cpp
|
.cpp.o:
|
||||||
$(CXX) -std=c++17 -o $@ -c $<
|
$(CXX) $(CXXFLAGS) $(CPPVERSION) $(CXXFLAGS_DEBUG) $(CXXFLAGS_WARN) -o $@ -c $<
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(DEL) $(TARGET) $(OBJECTS)
|
$(DEL) -f $(TARGET) $(OBJECTS) Makefile.bak
|
||||||
|
|
||||||
|
depend:
|
||||||
|
@sed -i.bak '/^# DEPENDENCIES/,$$d' Makefile
|
||||||
|
@$(DEL) sed*
|
||||||
|
@echo $(Q)# DEPENDENCIES$(Q) >> Makefile
|
||||||
|
@$(CXX) -MM $(SRC_FILES) >> Makefile
|
||||||
|
|
||||||
|
.PHONY: all clean depend
|
||||||
|
|
||||||
|
# DEPENDENCIES
|
||||||
|
main.o: main.cpp math.h
|
||||||
|
math.o: math.cpp
|
||||||
|
|
5
math.h
5
math.h
|
@ -1,3 +1,6 @@
|
||||||
|
#ifndef MATH_H
|
||||||
|
#define MATH_H
|
||||||
|
|
||||||
double ideal_gas_law(double, double, double);
|
double ideal_gas_law(double, double, double);
|
||||||
|
|
||||||
double average_acceleration(double, double, double, double);
|
double average_acceleration(double, double, double, double);
|
||||||
|
@ -19,3 +22,5 @@ double stress(double, double);
|
||||||
double shear_stress(double, double, double, double);
|
double shear_stress(double, double, double, double);
|
||||||
|
|
||||||
double coulombs_law(double, double, double, double);
|
double coulombs_law(double, double, double, double);
|
||||||
|
|
||||||
|
#endif // MATH_H
|
||||||
|
|
Loading…
Reference in a new issue