我是Makefiles的新手,遇到了这个错误"***混合隐式规则和常规规则:不推荐使用的语法make:***"我不知道如何处理
/* here is my makefile */
CC=gcc
CFLAGS= -g -Wall
LIBS=
TARGET= test
SRC_DIR = sourceFiles
OBJ_DIR = home
INC_DIR = headerFiles
_DEPS = flags.h errorhandling.h helpmenu.h
_OBJS = errorhandling.c calculator.c helpmenu.c
DEPS = $(patsubst %,$(INC_DIR)/%,$(_DEPS))
OBJS = $(patsubst %,$(OBJ_DIR)/%,$(_OBJS))
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
$(TARGET): $(OBJS)
$(CC) -o $@ $(OBJS) $(LIBS)
.PHONY: clean
clean:
$(RM) $(OBJS) $(TARGET)
我收到这个错误
Makefile:15: *** mixed implicit and normal rules: deprecated syntax
make: *** No rule to make target '/%.c', needed by 'home'. Stop.
很可能在OBJ_DIR
变量赋值的末尾有虚假的空白:
OBJ_DIR = home
在变量赋值的末尾永远不能有任何额外的字符,包括空格,因为make在变量值中包含了这些字符。
因此,'$(OBJ_DIR)'
扩展到'home '
,$(OBJ_DIR)/%.c
扩展到home /%.c
。