当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《跳过某些目标的makefile依赖项生成(例如`clean`)》经验,为你挑选了1个好方法。

我有几个C和C++项目都遵循我已经使用了一段时间的基本结构.我的源文件进入src/*.c,中间文件进入obj/*.[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)

现在我正处于为Debian系统打包的地步.我正在使用debuild构建Debian源包,并pbuilder构建二进制包.该debuild步骤只需执行clean目标,但即使这样也会生成并包含依赖项文件.

简而言之,我的问题是:我可以以某种方式阻止make生成依赖项,而我想要的只是运行clean目标吗?



1> Hasturkun..:

解决方案很简单,不要-include在clean下生成文件:

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

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有