# Declaration of variables C = clang COMMON_FLAGS = -Wall -MMD -fprofile-arcs -ftest-coverage C_FLAGS = $(COMMON_FLAGS) CC = g++ CC_FLAGS = $(COMMON_FLAGS) -std=c++17 -g -O0#-O2 LD_FLAGS = -lgmp -lmpfr -lgcov INCLUDES = -I../../Catch2-master/single_include -I/usr/include/eigen3 # File names EXEC = run CSOURCES = $(wildcard *.c) COBJECTS = $(CSOURCES:.c=.o) SOURCES = $(wildcard *.cpp) OBJECTS = $(SOURCES:.cpp=.o) # Main target $(EXEC): $(COBJECTS) $(OBJECTS) $(CC) $(COBJECTS) $(OBJECTS) -o $(EXEC) $(LD_FLAGS) # To obtain object files %.o: %.cpp $(CC) $(INCLUDES) $(CC_FLAGS) -o $@ -c $< # To obtain object files %.o: %.c $(C) $(INCLUDES) $(C_FLAGS) -o $@ -c $< -include $(SOURCES:%.cpp=%.d) -include $(CSOURCES:%.c=%.d) # To remove generated files clean: rm -f $(COBJECTS) $(OBJECTS) $(SOURCES:%.cpp=%.d) $(CSOURCES:%.c=%.d) *.gcov *.gcda *.gcno cleaner: clean rm -f $(EXEC)