23,121
社区成员
发帖
与我相关
我的任务
分享
CC = gcc
CFLAGS := -I inc/
TARGET_OBJ_DIR := obj
TARGET_SRC_DIR := src
TARGET_SRC_FILES := $(wildcard $(TARGET_SRC_DIR)/*)
TARGET_OBJS := $(addprefix $(TARGET_OBJ_DIR)/,$(notdir $(patsubst %.c,%.o,$(TARGET_SRC_FILES))))
TARGET := $(TARGET_OBJ_DIR)/test
$(TARGET) : $(TARGET_OBJS)
$(CC) $(TARGET_OBJS) -o $@ $(CFLAGS)
$(TARGET_OBJ_DIR)/%.d : $(TARGET_SRC_DIR)/%.c
$(CC) -MM $(CFLAGS) $< > $@.$$$$; \
sed 's,^,$(TARGET_OBJ_DIR)/,' $@.$$$$ > $@; \
rm $@.$$$$
$(TARGET_OBJ_DIR)/%.o : $(TARGET_SRC_DIR)/%.c
$(CC) -c $(CFLAGS) $< -o $@
include $(TARGET_OBJS:.o,.d)
VPATH = bin:inc:src:obj
CC = gcc
CFLAGS = -std=c99 -g -Iinc
# add corresponding .o file here when add .c to the project
OBJS = main.o
# $<: set of the dependencies,$@: set of the targets
magiclogin:$(OBJS)
$(CC) $(addprefix obj/,$<) -o bin/$@ $(CFLAGS)
#######################################################
# add .o file's generate rule
main.o: main.c
$(CC) -c $< -o obj/$@ $(CFALGS)
#######################################################
.PHONY: clean
clean:
-rm -f obj/*