如何有条件地将文件包含到Makefile中?

pet*_*ohn 8 c++ makefile

考虑以下Makefile:

# <include global configuration Makefile>

INCL = -I../include \
       -I<whatever>

CPPFLAGS=$(DEFS) $(INCL)
CXXFLAGS = -O0 -g -Wall -fmessage-length=0

SRCS = $(wildcard *.cpp)

OBJS = $(SRCS:.cpp=.o)

all: $(OBJS)

%.o: %.cpp
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<


depend: .depend

.depend: $(SRCS) 
    $(CPP) $(CPPFLAGS) -M $^ > $@

clean:
    rm -f $(OBJS)
    rm .depend


-include .depend
Run Code Online (Sandbox Code Playgroud)

此Makefile #include使用该g++ -M命令创建依赖关系链,并包含它.这可能是一个相当漫长的过程.问题是即使make clean被调用也会生成此文件,无论如何都会删除此文件.是否有条件地包含此文件,如果运行干净的目标,不打扰创建它?

Has*_*kun 12

像这样的东西:

ifneq ($(MAKECMDGOALS),clean)
-include .depend
endif
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅目标上制作手册页

编辑:-include不能缩进制表符,否则忽略.