如何在makefile中为目标编写特定规则?

时间:2015-11-17 13:15:41

标签: c++ makefile

我知道标题很模糊,但我不知道如何简明扼要地描述我的问题。如果你愿意,请编辑它。

目前我的makefile如下所示:

CC = g++
CFLAGS = -Wall -g

TARGET = foobar
SRC_FILES = foo.cpp bar.cpp main.cpp
OBJ_FILES := $(SRC_FILES:.cpp=.o)

$(TARGET): $(OBJ_FILES)
    $(CC) $(CFLAGS) $^ -o $@

%.o: %.cpp %.h
    $(CC) $(CFLAGS) -c $<

clean:
    rm -rf *.o $(TARGET)

问题是这个结构要求main.cpp有一个main.h头文件,我实际上没有。我怎么能很好地处理这个?

1 个答案:

答案 0 :(得分:5)

GCC(可能还有Clang)可以为你建立一个依赖列表;这样,您只需从源(cpp)文件中创建目标文件:

depend: .depend

.depend: $(SRC_FILES)
        rm -f ./.depend
        $(CC) $(CFLAGS) -MM $^ -MF  ./.depend;

include .depend

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

您可能还会对makedepend工具感兴趣。