我的makefile出现问题,我一直在阅读有关如何制作更易于使用的makefile的somme tutoriels但是我遇到了这个错误,而且我一直在寻找一段时间,尤其是在GNU make manual上在这里。
这是我的makefile:
SRC_DIR=./src
BUILD_DIR=./build
OBJS= $(BUILD_DIR)/main.o $(BUILD_DIR)/hamming.o
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c $(SRC_DIR)/%.h
$(CC) -c $< $(CFLAGS) -o $@
$(BUILD_DIR)/main: $(OBJS)
$(CC) -o $@ $^ $(CFLAGS)
我遇到错误:
make:没有规则来制作目标
build/main.o', needed by
build / main'。停止。
在我看来,变量OBJS中的对象与%.o模式规则没有关联,但我不知道为什么。
在我的工作目录中有:my makefile和两个目录'src'和'build'。
谢谢。
答案 0 :(得分:1)
我会走出困境,猜测没有src/main.h
。如果是这种情况,你可以这样解决问题:
$(BUILD_DIR)/hamming.o: $(BUILD_DIR)/%.o : $(SRC_DIR)/%.h
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
$(CC) -c $< $(CFLAGS) -o $@
修改:
现在我很困惑。请尝试这个(它很粗糙,但如果它有效我们可以改进它):
SRC_DIR=./src
BUILD_DIR=./build
OBJS= $(BUILD_DIR)/main.o $(BUILD_DIR)/hamming.o
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c $(SRC_DIR)/%.h
$(CC) -c $< $(CFLAGS) -o $@
$(BUILD_DIR)/main.o: $(SRC_DIR)/main.c
$(CC) -c $< $(CFLAGS) -o $@
$(BUILD_DIR)/main: $(OBJS)
$(CC) -o $@ $^ $(CFLAGS)
答案 1 :(得分:0)
这是我为NMake放在一起的一些文档,我希望它有所帮助。您确定在命令之前只有选项卡吗?你不能有空格,这是我过去看到的第一个错误。