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

如何通过Makefile将目标文件输出到指定目录并单独编译

实现方法

你可以通过修改Makefile的规则和变量定义,实现单个文件编译并输出到指定目录的需求,修改后的Makefile如下:

FORTRAN = ifort -c
PATH_MOD = mod/
PATH_OBJ = lnk/
FILE_MOD = mod_constant.f90 mod_rot.f mod_test.f90

# 拼接完整的源文件路径
SOURCE_FILES = $(addprefix $(PATH_MOD), $(FILE_MOD))
# 生成目标文件的完整路径(输出到lnk目录)
OBJECT_FILES = $(addprefix $(PATH_OBJ), $(FILE_MOD:%.f*=%.o))

# 默认目标:编译所有目标文件
all: $(OBJECT_FILES)

# 模式规则:单独编译每个源文件到lnk目录
$(PATH_OBJ)%.o: $(PATH_MOD)%.f*
	$(FORTRAN) $< -o $@

clean:
	rm -f $(PATH_OBJ)*.o

关键说明:

  • addprefix函数用来给文件名批量添加目录前缀,避免手动拼接路径出错
  • 模式规则$(PATH_OBJ)%.o: $(PATH_MOD)%.f*会匹配所有.f/.f90后缀的源文件,自动生成对应的lnk/xxx.o目标
  • 自动变量$<代表当前规则的依赖文件(即单个源文件),$@代表当前规则的目标文件,这样就能实现每个源文件单独编译并输出到指定目录
  • 新增的all目标作为默认执行入口,执行make时会自动编译所有目标文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:24:57