gpt4 book ai didi

scripting - 制作/制作文件进度指示!

转载 作者:行者123 更新时间:2023-12-03 10:43:06 29 4
gpt4 key购买 nike

看看这个 makefile,它有某种原始的进度指示(可能是一个进度条)。

请给我建议/意见!


# BUILD 最初是未定义的
ifndef 构建

# max 等于 256 个 x
十六:= x x x x x x x x x x x x x x x x
MAX := $(foreach x,$(十六),$(十六))

# T 通过用特殊字符串替换 BUILD 来估计我们正在构建的目标数量
T := $(shell $(MAKE) -nrRf $(firstword $(MAKEFILE_LIST)) $(MAKECMDGOALS)\
BUILD="COUNTTHIS"| grep -c "COUNTTHIS")

# N 是基数 1 中待处理目标的数量,实际上是基数 x :-)
N := $(wordlist 1,$T,$(MAX))

# 自动递减计数器,返回以 10 为基数的待处理目标数
计数器 = $(words $N)$(eval N := $(wordlist 2,$(words $N),$N))

# BUILD 现在定义为显示进度,这也避免了在循环中重新定义 T
BUILD = $(T) 的 @echo $(counter)
万一

# 虚拟假目标

.PHONY:全部干净

全部:目标
@echo 完成

干净的:
@rm -f 目标 *.c

# 虚拟构建规则

目标: a.c b.c c.c d.c e.c f.c g.c
@触摸$@
$(构建)

%。C:
@触摸$@
$(构建)



欢迎所有建议!

最佳答案

这个不那么侵入性,更令人敬畏。

ifneq ($(words $(MAKECMDGOALS)),1)
.DEFAULT_GOAL = all
%:
@$(MAKE) $@ --no-print-directory -rRf $(firstword $(MAKEFILE_LIST))
else
ifndef ECHO
T := $(shell $(MAKE) $(MAKECMDGOALS) --no-print-directory \
-nrRf $(firstword $(MAKEFILE_LIST)) \
ECHO="COUNTTHIS" | grep -c "COUNTTHIS")

N := x
C = $(words $N)$(eval N := x $N)
ECHO = echo "`expr " [\`expr $C '*' 100 / $T\`" : '.*\(....\)$$'`%]"
endif

.PHONY: all clean

all: target
@$(ECHO) All done

clean:
@rm -f target *.c
# @$(ECHO) Clean done

target: a.c b.c c.c d.c e.c
@$(ECHO) Linking $@
@sleep 0.1
@touch $@

%.c:
@$(ECHO) Compiling $@
@sleep 0.1
@touch $@

endif

关于scripting - 制作/制作文件进度指示!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/451413/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com