【问题标题】:No rule to make target in Maefile在 Makefile 中没有创建目标的规则
【发布时间】:2013-05-08 13:19:16
【问题描述】:

我正在学习编写 makefile。我自己做了一个简单的尝试和测试,但每次我运行 make 时,我都会得到:

make: *** No rule to make target `/%.cpp', needed by `obj'.  Stop.

我用谷歌搜索。我很确定我输入了正确的所有内容,并且我的文件夹已按应有的方式设置。这是生成文件:

CC = g++
LD = g++

NAME = app
OBJ_DIR = obj 
SRC_DIR = src 

CC_FLAGS = -std=c++0x

all: $(NAME)

$(NAME): $(OBJ_DIR)/%.o
    $(LD) $(OBJ_DIR)/%.o -o $@

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
    $(CC) $< -o $@ $(CC_FLAGS)

clean:
    rm $(NAME) $(OBJ_DIR) -rf 

有什么问题?

【问题讨论】:

    标签: unix makefile gnu-make


    【解决方案1】:

    行:

    $(NAME): $(OBJ_DIR)/%.o
    

    不正确。这不是模式规则(因为目标不包含模式字符 %),因此它被解释为显式规则,即 app 取决于名为 obj/%.o 的实际文件,该文件不存在,并且make不知道如何构建它(因为没有文件src/%.cpp)。

    您需要将其更改为:

    $(NAME): $(OBJ_DIR)/foo.o ...
    

    或您拥有的任何目标文件。

    【讨论】:

    • 是的,就是这样。谢谢你。我现在无法编译,因为它忽略了我的 c++0x 标志,但好吧,我猜这是另一个问题。
    猜你喜欢
    • 1970-01-01
    • 2021-01-30
    • 2023-01-10
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多