我正在使用 makefile 来编译由许多组成的程序.c
文件,并且任何时间make
被调用时,它仅编译上次运行后修改的那些文件(直到这里没有什么特别的)。
为了避免屏幕混乱,我在前面添加了@
在每个的开头$(CC)
打电话,在它之前我打印一个定制的echo
信息。例如:
%.o: %.c $(h1) $(h3) %.h
@echo -e "\tCompiling <" $<
@$(CC) $(CFLAGS) -c $< -o $(libDir)$@$(MATHOPTS)
我的问题是:我怎样才能控制冗长的内容make
以更“动态的方式”,以便能够:
-
正常行为:对于执行的每个 makefile 规则,仅打印一条自定义消息。
-
冗长的行为:打印每个 makefile 规则实际执行的命令(就好像
@
根本没用过)。
我会按照 automake 的方式来做:
V = 0
ACTUAL_CC := $(CC)
CC_0 = @echo "Compiling $<..."; $(ACTUAL_CC)
CC_1 = $(ACTUAL_CC)
CC = $(CC_$(V))
%.o: %.c $(h1) $(h3) %.h
$(CC) $(CFLAGS) -c $< -o $(libDir)$@$(MATHOPTS)
如果您需要在规则中执行其他命令,我喜欢以下代码片段。写$(AT)
代替@
当V=0
但打印时V=1
.
AT_0 := @
AT_1 :=
AT = $(AT_$(V))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)