我在makefile
遇到问题。
当我在终端中执行make
commande时,它必须生成header.o
和main.o
,然后将它们组合起来生成可排除的kmeans.o
文件,但它没有,它只生成header.o
km.o
,并且没有任何错误消息而停止。
CFLAGS = -ggdb
DEFINES = -DDEBUGGA
INCLUDES =
LIBS = -lstdc++
EXAMPLE = kmeans.o
CC=g++
.cpp.o:
$(CC) -c $(CFLAGS) $(DEFINES) $(INCLUDES) $<
all:: km.o kmeans.o
km.o: km.cpp km.hpp
gnuplot_i.o: gnuplot_i.hpp
kmeans.o: main.cpp
kmeans: $(EXAMPLE)
$(CC) -o $@ $(CFLAGS) $(EXAMPLE) $(LIBS)
clean:
rm -f $(EXAMPLE) kmeans
km.cpp
和km.hpp
是头文件及其实现。
gnuplot_i.hpp
是其实现的标头。
main.cpp
归档链接所有这些库的文件。
答案 0 :(得分:0)
此makefile中的默认目标是all: km.o kmeans.o
。
所以,当你运行make
运行时。因此make将创建这两个.o
文件并停止。
如果您希望make
与make kmeans
相同,则需要all: kmeans
作为默认规则,或将kmeans
目标移至all
之上target(因为第一个目标是默认目标)。