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

Makefile技巧:如何避免手动指定所有编译目标?

解决Makefile自动编译所有.s文件为.exe的问题

你之前用$(wildcard *.exe)失效的原因很直接:执行make时目标.exe文件还没生成,wildcard匹配不到任何内容,导致all目标只依赖clean,自然只会执行清理操作。

要实现自动编译所有.s文件,核心是先拿到所有.s源文件,再将它们转换为对应的.exe目标文件名,具体修改如下:

# 获取当前目录下所有.s源文件
SRCS := $(wildcard *.s)
# 将每个.s文件名替换为对应的.exe目标文件名
EXES := $(patsubst %.s,%.exe,$(SRCS))

# all目标依赖clean和所有生成的.exe文件
all: clean $(EXES)

clean:
	rm -f *.exe

%.exe: %.s
	vasmm68k_mot -kick1hunks -Fhunkexe -o $@ -nosym $<

关键说明:

  • $(wildcard *.s):扫描当前目录,返回所有后缀为.s的文件列表
  • $(patsubst %.s,%.exe,$(SRCS)):自动把所有.s文件名替换成对应的.exe文件名,无需手动维护目标列表
  • 修改后的all目标会同时依赖clean和所有.exe文件,执行make all时会先清理旧的exe,再自动编译所有新增或修改的.s文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:55:18