【发布时间】:2021-08-21 22:48:21
【问题描述】:
我正在尝试在 makefile 中编译一些文件时打印 {done}。像这样:
Compiling src/execution/ft_cd.c: {done}
Compiling src/execution/ft_check_path.c: {done}
Compiling src/execution/ft_echo_pwd_env.c: {done}
Compiling src/execution/ft_execution.c: {done}
Compiling src/execution/ft_exit.c: {done}
Compiling src/execution/ft_export.c: {done}
Compiling src/execution/ft_init_env.c: {done}
Compiling src/execution/ft_linked_lists.c: {done}
Compiling src/execution/ft_linked_lists_rest.c: {done}
Compiling src/execution/ft_pipes.c: {done}
Compiling src/execution/ft_redirection.c: {done}
Compiling src/execution/ft_unset.c: {done}
Compiling src/execution/ft_utlis.c: {done}
Compiling src/lexer/lexer_debug.c: {done}
Compiling src/lexer/lexer_get_tokens_op.c: {done}
Compiling src/lexer/lexer_get_tokens_word.c: {done}
Compiling src/lexer/lexer_get_tokens.c: {done}
Compiling src/lexer/lexer.c: {done}
Compiling src/expansion/expansion.c: {done}
Compiling src/parse/check_syntax.c: {done}
Compiling src/parse/parser_debug.c: {done}
Compiling src/parse/parser.c: {done}
Compiling src/readline/readline_debug.c: {done}
Compiling src/readline/readline.c: {done}
Compiling src/readline/get_next_line.c: {done}
Compiling src/main.c: {done}
但是输出是这样的:
Compiling src/execution/ft_cd.c: {done}
Compiling src/execution/ft_check_path.c: {done}
Compiling src/execution/ft_echo_pwd_env.c: {done}
Compiling src/execution/ft_execution.c: {done}
Compiling src/execution/ft_exit.c: {done}
Compiling src/execution/ft_export.c: {done}
Compiling src/execution/ft_init_env.c: {done}
Compiling src/execution/ft_linked_lists.c: {done}
Compiling src/execution/ft_linked_lists_rest.c: {done}
Compiling src/execution/ft_pipes.c: {done}
Compiling src/execution/ft_redirection.c: {done}
Compiling src/execution/ft_unset.c: {done}
Compiling src/execution/ft_utlis.c: {done}
Compiling src/lexer/lexer_debug.c: {done}
Compiling src/lexer/lexer_get_tokens_op.c: {done}
Compiling src/lexer/lexer_get_tokens_word.c: {done}
Compiling src/lexer/lexer_get_tokens.c: {done}
Compiling src/lexer/lexer.c: {done}
Compiling src/expansion/expansion.c: {done}
Compiling src/parse/check_syntax.c: {done}
Compiling src/parse/parser_debug.c: {done}
Compiling src/parse/parser.c: {done}
Compiling src/readline/readline_debug.c: {done}
Compiling src/readline/readline.c: {done}
Compiling src/readline/get_next_line.c: {done}
Compiling src/main.c: {done}
这是我打印此输出的规则:
$(OBJECTSDIR)/%.o : $(SOURCEDIR)/%.c
$(HIDE)$(MKDIR) $(dir $@)
$(HIDE)/bin/echo -n "Compiling $<:"
@echo "\t\t\t\t$(GREEN){done}$(RESET)"
$(HIDE)$(CC) $(FLAGS) -I $(HEADERSDIR) -I $(LIBFT_HEADER) -o $@ -c $<
【问题讨论】:
-
有更好的方法,但您可以在添加选项卡之前在 echo 中使用回车键重置为第 0 列。
@echo -e "\r\t\t\t\t\t{done}" -
@RyanHaining 我试过你的解决方案,效果很好,非常感谢。
-
@DarkSide77 这很粗糙。
{done}将始终出现在同一个位置,如果它们碰巧在那里,则会覆盖其他字符