2014-04-04 42 views
1

我試圖運行下面的MakefileMakefile文件,不知道如何使目標

SRC=../src 
INC=../inc 

OBJS=$(SRC)/rrbsSimulator.o \ 
    $(SRC)/XMLParser.o 

ALLOBJS=rrbsSimulator.o \ 
     XMLParser.o 

CC=/usr/sfw/bin/gcc 

FLAGS= -Wall -g -m64 

AINC=-I$(INC) 
ALLLIBS=-lcc -lsocket -lnsl -lpthread -lstdc++ 

%.o: %.cpp 
    $(CC) $(AINC) $(FLAGS) -c $< 

lcc: $(ALLOBJS) 
    $(CC) $(FLAGS) $(ALLLIBS) $(ALLOBJS) -o lycaUSSDSIM 
    mv lycaUSSDSIM ../bin 


clean: 
    rm -f $(ALLOBJS) ../bin/lycaUSSDSIM 

我收到以下錯誤

make: Fatal error: Don't know how to make target `rrbsSimulator.o' 

什麼是錯誤,我都做了些什麼?

+0

我猜'CR(回車)'在錯誤行之前的行末尾。 –

+1

rrbsSimulator.cpp是否存在於預期位置?以我的經驗失敗找到rrbsSimulator.cpp給出了這個錯誤。 – user2672165

+0

你在你的Makefile中使用空格來縮進,例如'$(CC)...'嗎?如果是,請將它們更改爲一個Tab並重試。 –

回答

1

添加VPATH = $(SRC)它會工作。當我們實現Makefile時,還需要用間距集中。

1

錯誤Don't know how to make target rrbsSimulator.o'`表示兩件事之一。無論是

  1. 沒有規則可以使這個文件,或
  2. 有一個規則,但不能做它的依賴(或找到)。

這看起來像一個有效的規則。

%.o: %.cpp 
    $(CC) $(AINC) $(FLAGS) -c $< 

因此,最可能的原因是它的依賴項,後綴爲cpp,缺失。在相關源文件夾中查找rrbsSimulator.cpp

不幸的是,一些舊版本的make使用的makefile對於空格和製表符等格式化來說是非常挑剔的,而且看不到這種格式的文件。如果您使用其中一個make,您需要仔細檢查空白。

1

你的源文件位於何處?

看着SRCOBJS變量我可以想象你的源代碼文件放在../src文件夾中。但%.o : %.cpp將在當前目錄中搜索* .o和* .cpp文件。因此它不會找到rrbsSimulator.o和rrbsSimulator.cpp。

順便說一句,你爲什麼不使用標準CFLAGS變量而不是你自己的FLAGS? 你最好把它寫這種方式:

FLAGS += -Wall -g -m64 

如果你想以後命令行添加一些額外的標誌?這會讓你以這種方式調用你的makefile:

make FLAGS=-s