我尝试运行以下Makefile
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 :(得分:2)
错误Don't know how to make target
rrbsSimulator.o'“表示两件事之一。任
这看起来像一个有效的规则。
%.o: %.cpp
$(CC) $(AINC) $(FLAGS) -c $<
因此,最可能的原因是缺少其后缀为cpp的依赖项。在相关的源文件夹中查找rrbsSimulator.cpp
。
不幸的是,make
的某些旧版本使用的makefile对于格式如空格和制表符非常挑剔,并且不可能以这种格式看到它们。如果您使用其中一个make
,则需要仔细检查空白区域。
答案 1 :(得分:1)
您的源文件位于何处?
查看SRC
和OBJS
变量,我可以想象您的源代码文件放在../src文件夹中。但%.o : %.cpp
将在当前目录中搜索* .o和* .cpp文件。因此它既不会找到rrbsSimulator.o也不会找到rrbsSimulator.cpp。
CFLAGS
变量代替你的FLAGS
?
你最好这样写:
FLAGS += -Wall -g -m64
如果您想稍后从命令行添加一些额外的标志怎么办?这将允许您以这种方式调用makefile:
make FLAGS=-s
答案 2 :(得分:1)
添加VPATH = $(SRC)它将起作用。当我们实现Makefile时,还需要集中间距。
答案 3 :(得分:0)
rrbsSimulator.cpp不存在。