首页 文章

跳过某些目标的makefile依赖项生成(例如`clean`)

提问于
浏览
7

我有几个C和C项目都遵循我已经使用了一段时间的基本结构 . 我的源文件位于 src/*.cobj/*.[do] 中的中间文件和顶级目录中的实际可执行文件 .

我的makefile大致遵循这个模板:

# The final executable
TARGET := something
# Source files (without src/)
INPUTS := foo.c bar.c baz.c

# OBJECTS will contain: obj/foo.o obj/bar.o obj/baz.o
OBJECTS := $(INPUTS:%.cpp=obj/%.o)
# DEPFILES will contain: obj/foo.d obj/bar.d obj/baz.d
DEPFILES := $(OBJECTS:%.o=%.d)

all: $(TARGET)

obj/%.o: src/%.cpp
    $(CC) $(CFLAGS) -c -o $@ $<

obj/%.d: src/%.cpp
    $(CC) $(CFLAGS) -M -MF $@ -MT $(@:%.d=%.o) $<

$(TARGET): $(OBJECTS)
    $(LD) $(LDFLAGS) -o $@ $(OBJECTS)

.PHONY: clean
clean:
    -rm -f $(OBJECTS) $(DEPFILES) $(RPOFILES) $(TARGET)

-include $(DEPFILES)

现在我'm at the point where I' m打包这个为Debian系统 . 我正在使用 debuild 来构建Debian源包,并使用 pbuilder 来构建二进制包 . debuild 步骤只需执行 clean 目标,但即使这样也会生成并包含依赖项文件 .

简而言之,我的问题是: Can I somehow prevent make from generating dependencies when all I want is to run the clean target?

1 回答

  • 9

    解决方案很简单,不要在干净的情况下生成文件:

    ifneq ($(MAKECMDGOALS),clean)
        -include $(DEPFILES)
    endif
    

相关问题