如何在makefile规则中更改文件名

如何在makefile规则中更改文件名,makefile,Makefile,我用gcc生成dep没有问题 %.o: %.c $(CC) -MMD -c $< -o $< 如何使armcc适应gcc代码部分?我尝试下面的代码,但没有帮助,它没有生成.d文件 %.o: %.c armcc --md -depend=$(patsubst %o, %.d, $@) -c @< -o $@ 在编译过程中,我发现甚至我的--md和--dependent选项都没有被应用 %.o: %.c armcc --md -depend=$(@:%.

我用gcc生成dep没有问题

%.o: %.c
    $(CC) -MMD -c $< -o $<
如何使armcc适应gcc代码部分?我尝试下面的代码,但没有帮助,它没有生成
.d
文件

%.o: %.c
    armcc --md -depend=$(patsubst %o, %.d, $@) -c @< -o $@
在编译过程中,我发现甚至我的
--md
--dependent
选项都没有被应用
%.o: %.c
    armcc --md -depend=$(@:%.o=%.d) -c @< -o $@
armcc--md-depend=$(@:%.o=%.d)-c@<-o$@ 这将简单地告诉gnumake用
object.d
替换
object.o

$@
是您的目标吗
%.o=%.d
返回对象文件的*.d名称

在您的
patsubst
中,您将
%o
替换为
%.d
,因此文件
foo.o
的结果将是
%
匹配
foo.
,而不是
foo
,输出将是
foo..d
而不是
foo.d
。此外,我相信应该是
$我尝试了这一点,但仍然不能,我在问题中更新了我的结果我认为你的代码是正确的,因为我重新编写了另一个makefile并且它可以工作,我真的不知道为什么在我的第一个makefile中,甚至编译选项都没有应用在规则中
%.o: %.c
    armcc --md -depend=$(@:%.o=%.d) -c @< -o $@
armcc    -c -o a1.o a1.c
armcc    -c -o a2.o a2.c
armcc    -c -o a3.o a3.c
armcc    -c -o main.o main.c
armlink -o test a1.o a2.o a3.o main.o
%.o: %.c
    armcc --md -depend=$(@:%.o=%.d) -c @< -o $@