2013-05-08 17 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