【问题标题】:Make doesn't see rule with % markMake 看不到带有 % 标记的规则
【发布时间】:2016-07-27 21:00:29
【问题描述】:

我正在尝试将调试目标添加到 all-dbg 之类的项目中,但收到错误消息:

    $ make all-dbg
    make: *** No rule to make target 'tted.o-dbg', needed by 'tted-dbg'.  Stop.

这是 Makefile:

    TARGET=tted
    CC=gcc
    CFLAGS=-Wall -std=c99
    CFLAGS-dbg=-g
    LDFLAGS=-lncurses

    all: $(TARGET)

    all-dbg: $(TARGET)-dbg

    SOURCES=$(wildcard *.c)
    HEADERS=$(wildcard *.h)
    OBJECTS=$(patsubst %.c, %.o, $(SOURCES))
    OBJECTS-dbg=$(patsubst %.c, %.o-dbg, $(SOURCES))
    PCHEADERS=$(HEADERS:=.gch)

    %.o: %.c
            $(CC) $(CFLAGS) -c $< -o $@

    %.o-dbg: %c
            $(CC) $(CFLAGS) $(CFLAGS-dbg) -c $< -o $@

    %.h.gch: %.h
            $(CC) $(CFLAGS) $<

    $(TARGET): $(PCHEADERS) $(OBJECTS)
            $(CC) $(OBJECTS) $(LDFLAGS) -o $@

    $(TARGET)-dbg: $(PCHEADERS) $(OBJECTS-dbg)
            $(CC) $(OBJECTS-dbg) $(LDFLAGS) -o $@

    clean:
            -rm -f *.o
            -rm -f *.o-dbg
            -rm -f *.h.gch
            -rm -f $(TARGET)
            -rm -f $(TARGET)-dbg

有什么建议吗?

【问题讨论】:

    标签: debugging makefile build compiler-errors gnu-make


    【解决方案1】:

    您在%.o-dbg: %c 中缺少一个点。它可能应该改为%.o-dbg: %.c

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      相关资源
      最近更新 更多