我真的很难让这个 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 包含所有头文件,并且每个实现文件都包含对其各自头文件的包含。
最佳答案
缺少将 .c 文件编译为 .o 对象的实际命令。将 $(CC)
添加到配方中:
$(OBJECTS): $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
$(CC) $(CPPFLAGS) -c $(OUTPUT_OPTION) $<
^^^^^
关于c - 努力让 Makefile 使用单独的头文件和源文件目录运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33189556/