makefile只为头文件生成文件对象?

时间:2014-11-17 17:21:39

标签: c++ makefile

我在makefile遇到问题。 当我在终端中执行make commande时,它必须生成header.omain.o,然后将它们组合起来生成可排除的kmeans.o文件,但它没有,它只生成header.o km.o,并且没有任何错误消息而停止。

这是我的make文件:

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.cppkm.hpp是头文件及其实现。 gnuplot_i.hpp是其实现的标头。 main.cpp归档链接所有这些库的文件。

1 个答案:

答案 0 :(得分:0)

此makefile中的默认目标是all: km.o kmeans.o

所以,当你运行make运行时。因此make将创建这两个.o文件并停止。

如果您希望makemake kmeans相同,则需要all: kmeans作为默认规则,或将kmeans目标移至all之上target(因为第一个目标是默认目标)。