# Declaration of variables GCC=gcc GXX=g++ CFLAGS= -Wall -pedantic -std=c99 -g CPPFLAGS= -Wall -pedantic -std=c++11 -g INCLUDES = $(foreach dir, $(INCDIR), -I$(dir)) # Directories SRCDIR=src INCDIR=inc src src/vrpn src/vrpn/quat src/vrpn/build OBJDIR=obj # Final exacutable name EXE=BlueTooth # File names CSOURCES := $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.c )) CPPSOURCES := $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.cpp )) COBJECTS = $(CSOURCES:.c=.o) CPPOBJECTS = $(CPPSOURCES:.cpp=.o) OBJECTS = $(CPPOBJECTS) $(COBJECTS) LIBS= -lpthread -lbluetooth -lvrpn -lquat -Lsrc/vrpn/build -Lsrc/vrpn/build/quat # Default target all: logs vrpn/build $(EXE) # Main target $(EXE): $(OBJECTS) $(GXX) $(CPPFLAGS) $^ -o $@ $(INCLUDES) $(LIBS) $(COBJECTS) : %.o : %.c $(GCC) $(CFLAGS) -c $< -o $@ $(INCLUDES) $(LIBS) $(CPPOBJECTS) : %.o : %.cpp $(GCC) $(CPPFLAGS) -c $< -o $@ $(INCLUDES) $(LIBS) vrpn/build: mkdir -p src/vrpn/build cd src/vrpn/build && cmake .. && make logs: mkdir -p logs clean_logs: rm -f logs/* clean: rm -f $(EXE) $(OBJECTS) rm -rf src/vrpn/build debug: @echo $(COBJECTS) @echo $(CPPOBJECTS)