You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已完成Makefile构建,如何添加自动运行escalunador的规则?

在Makefile中添加构建后自动运行程序的规则

好问题!要实现构建完成后自动运行你的escalunador程序,有两种灵活的方案可以选择,下面我会详细说明并给出修改后的Makefile代码:

方案1:添加独立的run目标(推荐)

这种方式保留了原有的构建逻辑,同时新增一个可选的run目标,让你可以按需选择只构建(make)或者构建后直接运行(make run)。

你只需要在原Makefile的末尾添加以下内容:

.PHONY: run
run: all
	./escalunador

关键说明:

  • .PHONY: run:声明run是一个伪目标,避免当前目录下如果存在名为run的文件时,Make会误以为目标已经完成而跳过执行步骤。
  • run: all:表示运行目标依赖于all目标,也就是先完成所有构建工作,再执行运行命令。
  • 缩进的./escalunador:这是实际运行程序的命令,注意必须用Tab键缩进(Makefile的语法硬性要求)。

如果需要给程序传递命令行参数,可以修改成这样:

.PHONY: run
run: all
	./escalunador $(ARGS)

使用时只需这样传参:make run ARGS="参数1 参数2"

方案2:修改all目标,默认构建后自动运行

如果你希望每次执行make时都自动运行程序,可以直接修改原有的all目标,让它依赖于运行步骤。

修改后的完整Makefile如下:

CC = gcc
CFLAGS = -g -Wall -std=c99

.PHONY: all run

all: run

run: escalunador
	./escalunador

escalunador: escalunador.o usables.o queue.o linkedlist.o
	$(CC) $(CFLAGS) -o escalunador escalunador.o usables.o queue.o linkedlist.o

escalunador.o: escalunador.c usables.h queue.h linkedlist.h
	$(CC) $(CFLAGS) -c escalunador.c

usables.o: usables.c queue.h linkedlist.h
	$(CC) $(CFLAGS) -c usables.c

queue.o: queue.c linkedlist.h
	$(CC) $(CFLAGS) -c queue.c

linkedlist.o: linkedlist.c linkedlist.h
	$(CC) $(CFLAGS) -c linkedlist.c

clean:
	$(RM) escalunador *.p *~

关键说明:

  • 这里把all的依赖改成了run,而run依赖于escalunador目标(你的可执行程序),所以执行make时会先完成构建流程,再自动运行程序。
  • 添加.PHONY: all run来声明伪目标,确保逻辑不会因为同名文件而出现异常。

两种方案都能满足你的需求,推荐第一种,因为它更灵活,能兼顾「只构建」和「构建后运行」两种场景。

内容的提问来源于stack exchange,提问作者Daniel Serrano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:09:12