In this Makefile, I don’t know how to compile c objects in the same mix of C and C ++ Makefile. If I compile C objects first and run this Makefile, it will work. Can anyone help fix this for me? Thank you in advance!
CXX = g++ CXXFLAGS = -Wall -D__STDC_LIMIT_MACROS SERVER_SRC = \ main.cpp SERVER_SRC_OBJS = ${SERVER_SRC:.cpp=.o} REDIS_SRC = \ $(HIREDIS_FOLDER)/net.c \ $(HIREDIS_FOLDER)/hiredis.c \ $(HIREDIS_FOLDER)/sds.c \ $(HIREDIS_FOLDER)/async.c REDIS_SRC_OBJS = ${REDIS_SRC:.c=.o} .SUFFIXES: .SUFFIXES: .o .cpp .cpp.o: $(CXX) $(CXXFLAGS) -I$(HIREDIS_FOLDER) \ -c $< -o $*.o all: server net.o: net.c fmacros.h net.h hiredis.h async.o: async.c async.h hiredis.h sds.h dict.c dict.h hiredis.o: hiredis.c fmacros.h hiredis.h net.h sds.h sds.o: sds.c sds.h server: $(SERVER_SRC_OBJS) $(REDIS_SRC_OBJS) mkdir -p bin $(CXX) $(CXXFLAGS) -o bin/redis_main \ -I$(HIREDIS_FOLDER) \ $(REDIS_SRC_OBJS) \ $(SERVER_SRC_OBJS) \ -lpthread \ -lrt \ -Wl,-rpath,./ .PHONY: clean clean: $(RM) -r bin/redis_main $(RM) ./*.gc?? $(RM) $(SERVER_SRC_OBJS) $(RM) $(REDIS_SRC_OBJS)
source share