小程序模板:专业的小程序模板与静态模板分享平台
小程序
教程
搜索
当前位置 : 首页> 小程序教程> 【Linux】make/Makefile & 进度条小程序

【Linux】make/Makefile & 进度条小程序

当在Linux系统中使用make命令时,它会根据Makefile文件中定义的规则和依赖关系来构建项目。Makefile文件包含了一组规则,每个规则描述了如何从源文件生成目标文件。下面是一个简单的示例,演示如何使用makeMakefile来构建一个C语言项目,并在构建过程中显示进度条。

首先,创建一个名为Makefile的文件,并将以下内容添加到其中:

CC = gcc  
CFLAGS = -Wall  
SRC = main.c file1.c file2.c  
OBJ = $(SRC:.c=.o)  
TARGET = my_program  
  
all: $(TARGET)  
  
$(TARGET): $(OBJ)  
 $(CC) $(CFLAGS) -o $(TARGET) $(OBJ)  
 @echo "Build completed successfully!"  
  
%.o: %.c  
 $(CC) $(CFLAGS) -c $< -o $@  
 @echo "Compiled $<"  
  
clean:  
 rm -f $(OBJ) $(TARGET)  
 @echo "Cleanup completed successfully!"  
  
.PHONY: all clean

上述Makefile定义了以下规则:

  • CCCFLAGS分别指定了使用的编译器和编译选项。

  • SRC变量列出了项目中所有的源文件。

  • OBJ变量通过将源文件的后缀从.c替换为.o来生成对应的目标文件列表。

  • TARGET变量指定了生成的可执行文件的名称。

  • all规则是默认规则,它依赖于$(TARGET)规则,用于构建整个项目。

  • $(TARGET)规则指定了如何从目标文件生成可执行文件。

  • %.o: %.c规则定义了如何从源文件生成目标文件的通用规则。

  • clean规则用于清理生成的目标文件和可执行文件。

接下来,创建一个名为progress.sh的Shell脚本文件,用于显示进度条。将以下内容添加到该文件中:

#!/bin/bash  
  
echo "Building project..."  
echo "===================="  
count=0  
total=${#SRC[@]} # 源文件的总数,假设存储在SRC数组中  
for src in ${SRC[@]}; do  
    count=$((count+1))  
    percent=$((count*100/total))  
    echo -n "$percent% [$((count))/${total}]"  
    for ((i=0; i<$percent; i++)); do  
        echo -n "="  
    done  
    for ((i=$percent; i<100; i++)); do  
        echo -n " "  
    done  
    echo -n " [$(basename $src .c)].o"  
    echo "" # 换行显示进度条  
done  
echo "" # 空行作为进度条完成后的分隔符

在上述脚本中,我们使用了一个简单的进度条算法来计算和显示进度。它会根据源文件的总数计算出每个源文件的进度百分比,并打印出相应的进度条。进度条由等号(=)表示已完成的部分,空格表示未完成的部分。在进度条的右侧还会显示当前正在编译的源文件名称。

最后,在终端中运行以下命令来构建项目并显示进度条:

make -f Makefile all | progress.sh


联系客服 意见反馈

签到成功!

已连续签到1天,签到3天将获得积分VIP1天

知道了