我正在尝试编译我的C代码并且一切正常,唯一的问题是我的清理没有被执行..我不知道为什么,我已经读过关于虚假目标但我无法看到我的错误在哪里。
这是我的makefile的最小例子
CC = gcc
LD=gcc
CFLAGS = -O3 -Wextra -Wall
CFLAGS_DEBUG = $(CFLAGS) -Wall -pg -g -std=c99
OBJDIR_DEBUG = obj/Debug
OUT_DEBUG = bin/Debug/myProgramm
CFLAGS_RELEASE = $(CFLAGS) -O3 -Wall -std=c99
OBJDIR_RELEASE = obj/Release
OUT_RELEASE = bin/Release/myProgramm
OBJ_DEBUG = $(OBJDIR_DEBUG)/src/main.o $(OBJDIR_DEBUG)/src/file_one.o
OBJ_RELEASE = $(OBJDIR_RELEASE)/src/main.o $(OBJDIR_RELEASE)/src/file_one.o
.PHONY: all clean
all: debug release
clean: clean_debug clean_release
before_debug:
test -d bin/Debug || mkdir -p bin/Debug
test -d $(OBJDIR_DEBUG)/src || mkdir -p $(OBJDIR_DEBUG)/src
debug: before_debug out_debug
out_debug: before_debug $(OBJ_DEBUG)
$(LD) $(OBJ_DEBUG) -o $(OUT_DEBUG)
$(OBJDIR_DEBUG)/src/main.o: src/main.c
$(CC) $(CFLAGS_DEBUG) -c src/main.c -o $(OBJDIR_DEBUG)/src/main.o
$(OBJDIR_DEBUG)/src/file_one.o: src/file_one.c
$(CC) $(CFLAGS_DEBUG) -c src/file_one.c -o $(OBJDIR_DEBUG)/src/file_one.o
clean_debug:
rm -f $(OBJ_DEBUG) $(OUT_DEBUG)
rm -rf bin/Debug
rm -rf $(OBJDIR_DEBUG)/src
before_release:
test -d bin/Release || mkdir -p bin/Release
test -d $(OBJDIR_RELEASE)/src || mkdir -p $(OBJDIR_RELEASE)/src
release: before_release out_release
out_release: before_release $(OBJ_RELEASE)
$(LD) -o $(OUT_RELEASE) $(OBJ_RELEASE)
$(OBJDIR_RELEASE)/src/main.o: src/main.c
$(CC) $(CFLAGS_RELEASE) -c src/main.c -o $(OBJDIR_RELEASE)/src/main.o
$(OBJDIR_RELEASE)/src/file_one.o: src/file_one.c
$(CC) $(CFLAGS_RELEASE) -c src/file_one.c -o $(OBJDIR_RELEASE)/src/file_one.o
clean_release:
rm -f $(OBJ_RELEASE) $(OUT_RELEASE)
rm -rf bin/Release
rm -rf $(OBJDIR_RELEASE)/src