在makefile中,在编译之前回显“ compiling”

问题描述 投票:0回答:1

我以为这很容易,但是我实际上找不到并在互联网上找不到,例如在编译之前就广告“ 目标文件的编译”的解决方案,并避免在同一位置重新链接时间

我的makefile文件将是这样的:

    libfrog.a: $(OBJS)
        @echo "building the library"
        ar -rc $@ $^
    %.o:%.c
        gcc -i. -c -o $@ $<

当提示“ make”时产生的:

    gcc -I. -c -o file01.o file01.c
    gcc -I. -c -o file02.o file02.c
    gcc -I. -c -o file03.o file03.c
    gcc -I. -c -o file04.o file04.c
    gcc -I. -c -o file05.o file05.c
    building library
    ar -rc libfrog.a file01.o file02.o file03.o file04.o file05.o

但我想拥有:

    compilation of the objects files
    gcc -I. -c -o file01.o file01.c
    gcc -I. -c -o file02.o file02.c
    gcc -I. -c -o file03.o file03.c
    gcc -I. -c -o file04.o file04.c
    gcc -I. -c -o file05.o file05.c
    building library
    ar -rc libfrog.a file01.o file02.o file03.o file04.o file05.o

现在:

1-如果我在调用规则libfrog.a之前放回声(例如,通过创建另一个第一个规则),即使我两次提示“ make”,也将不打印任何内容...

2-如果我在规则%.o:%.c中添加回显,它将为每个文件打印

3-如果我将echo作为第一条规则的依赖项,即使仅修改了一个文件libfrog.a: echo $(OBJS)(以及一条规则“ echo”,当再次修改“ make”时,它将强制重新链接所有文件)回显文本)...

因此,我尝试为每个编译回显,但是通过将文本更改为不回显,我失败了……我试图创建一个echo.txt文件只是为了创建一个取决于其存在的规则,但我也失败了。我不知道是否有可能?

makefile echo
1个回答
1
投票

这不是很简单。但是,如果您使用的是GNU make,则可以在order-only prerequisites的帮助下完成它:

%.o : %.c | announce
        gcc -I. -c -o $@ $<

.PHONY: announce
announce:
        echo "compilation of the objects files"
© www.soinside.com 2019 - 2024. All rights reserved.