如何更改makefile中的gcc编译信息

How to change gcc compile message in makefile

我是编程新手。

我需要帮助我在 makefile 中隐藏消息。 让我告诉你:

编译这组文件时(grid.cc attribute.cc targa.cc) http://prntscr.com/67ack4

我看到这条消息:gcc5 -Wall -O2 -pipe -mtune=i686 -c attribute.cc

我想为自己辩护:合辑 targa.cc 我想为自己辩护,比如:汇编 attribute.cc ETC 等...

希望你明白我的意思。

这是我的 makefile :

BIN = ../libgame.a


CXX = gcc5
CFLAGS = -Wall -O2 -pipe -mtune=i686

OBJFILES = grid.o attribute.o targa.o

########################################################################################################

default:
 $(CXX) $(CFLAGS) -c grid.cc
 $(CXX) $(CFLAGS) -c attribute.cc
 $(CXX) $(CFLAGS) -c targa.cc
 ar cru $(BIN) $(OBJFILES)
 ranlib $(BIN)
 rm -f *.o

您可以使用 automake 样式的静默规则技巧来控制命令的输出内容。

要直接执行此操作,您可以这样做:

BIN = ../libgame.a

CXX = gcc5
CFLAGS = -Wall -O2 -pipe -mtune=i686

OBJFILES = grid.o attribute.o targa.o
########################################################################################################

default:
    @echo 'Compiling grid.cc';$(CXX) $(CFLAGS) -c grid.cc
    @echo 'Compiling attribute.cc';$(CXX) $(CFLAGS) -c attribute.cc
    @echo 'Compiling targa.cc';$(CXX) $(CFLAGS) -c targa.cc
    ar cru $(BIN) $(OBJFILES)
    ranlib $(BIN)
    rm -f *.o

或者您可以使用我的 silent_rules.mk 并使用:

 $(eval $(call vrule,Compile,Compiling $$(value 1))

 $(call Compile,grid.cc);$(CXX) $(CFLAGS) -c grid.cc
 $(call Compile,attribute.cc);$(CXX) $(CFLAGS) -c attribute.cc
 $(call Compile,targa.cc);$(CXX) $(CFLAGS) -c targa.cc

改为获取 Compiling grid.ccCompiling attribute.ccCompiling targa.cc 消息。 (如果您为目标文件使用了正确的目标,您可以使用默认的 $(GEN) 静默规则来自动获得 GEN xxx.o 输出。