Makefile:没有规则来制作目标(自动变量)

时间:2011-08-24 14:24:00

标签: makefile

我的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'。

谢谢。

2 个答案:

答案 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放在一起的一些文档,我希望它有所帮助。您确定在命令之前只有选项卡吗?你不能有空格,这是我过去看到的第一个错误。