首页 > 解决方案 > Makefile : 无关的隐式目标文件

问题描述

考虑以下简单的 Makefile 规则

target : objDir/target.o
    (...recipe...)

objDir/target.o : target.c
    (...recipe...)

我想故意生成target.o一个专用目录。

但是这个食谱会失败。因为在调用时make target,它会尝试同时生成objDir/target.oAND target.o,然后在链接阶段,它会由于重复的符号而失败。

看起来这target.o是一个隐式依赖,即使它从未在列表中指定,并且列表是非空的。target.o然后可以满足,因为target.c存在于同一目录中。

所以我可以想出多种复杂的方法来解决这个问题,从重命名源文件,或更改目标的名称,到委派从另一个目录开始的某个子 Makefile,但没有一个让人感到满意。

问题是:有没有办法告诉make不承担目标的target.o依赖target

标签: makefile

解决方案


推荐阅读