有人可以向我解释为什么我会收到此错误*** 混合的隐式和正常规则:已弃用的语法制作:***



我是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

最新更新