2013-05-08 16 views
0

我正在学习编写makefile。我自己做了一个简单的测试,但每次运行make时,我都会得到:无法在Maefile中创建目标

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

我使用Google搜索。我很确定我输入的所有内容都正确,我的文件夹按照他们应该的方式设置。这里是makefile:

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 [email protected] 

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp 
    $(CC) $< -o [email protected] $(CC_FLAGS) 

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

问题是什么?

回答

1

行:

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

是不正确的。这不是模式规则(因为目标不包含模式字符,%),所以它被解释为明确的规则,并说app取决于名称为obj/%.o的实际文件,该文件不存在,并且不会生成知道如何建立它(因为没有文件src/%.cpp)。

您需要将此改为:你有

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

或任何目标文件。

+0

是的,就是这样。谢谢。我现在无法编译,因为它忽略了我的C++ 0x标志,但是,那是我猜的另一个问题。 – darxsys 2013-05-08 15:37:29