我真的很难让这个Makefile正常运行。我得到的当前错误是:
make: Iheader: Command not found
Makefile: 18: recipe for target 'object/fcfs.o' failed
make: [object/fcfs.o] Error 127 (ignored)
Iheader -MMD -MP -c -o object/sjf.o src/sjf.c
然后对每个实现文件重复此错误。我仍然是构建自己的make文件的新手,我觉得这是一个我错过的简单错误。我试过谷歌搜索,到目前为止我找到的解决方案都没有为我工作。
source
|__header
| |__fcfs.h
| |__hpf.h
| |__rr.h
| |__sjf.h
|
|__object
|
|__src
| |__fcfs.c
| |__hpf.c
| |__main.c
| |__rr.c
| |__sjf.c
|
|__Makefile
生成文件:
INC_DIR := header
SRC_DIR := src
OBJ_DIR := object
CC := gcc
CPPFLAGS := -I$(INC_DIR) -MMD -MP
SOURCES := $(wildcard $(SRC_DIR)/*.c)
OBJECTS := $(SOURCES:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
DEPS := $(wildcard $(OBJ_DIR)/*.d)
.PHONY: clean
main: $(OBJECTS)
$(CC) $(LDFLAGS) $^ -o $@
$(OBJECTS): $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
$(CPPFLAGS) -c $(OUTPUT_OPTION) $<
clean: ; $(RM) $(DEPS) $(OBJECTS)
-include $(DEPS)
$(MAKEFILE_LIST): ;
%.h: ;
%:: %,v
%:: RCS/%,v
%:: RCS/%
%:: s.%
%:: SCCS/s.%
我的main.c包含所有头文件,每个实现文件都包含一个包含在各自标题中的文件。
答案 0 :(得分:2)
缺少将.c文件编译为.o对象的实际命令。将$(CC)
添加到食谱中:
$(OBJECTS): $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
$(CC) $(CPPFLAGS) -c $(OUTPUT_OPTION) $<
^^^^^