如何在Makefile中用独立变量替换SRCS、OBJS中的src/与bin/目录?
当然可以!这是Makefile配置里超实用的优化技巧
完全没问题,而且这种写法能让你的Makefile更易维护——以后要修改源文件目录或者目标文件输出目录时,只需要改一处变量就行,不用逐个文件路径去替换。
基础实现方式
你可以先定义两个独立的目录变量,再用它们来构建SRCS和OBJS:
# 定义源文件目录和目标文件输出目录 SRC_DIR := src/ BIN_DIR := bin/ # 基于目录变量构建源文件列表 SRCS := $(SRC_DIR)main.c $(SRC_DIR)sdlshape.c $(SRC_DIR)sdlevent.c # 同理构建目标文件列表 OBJS := $(BIN_DIR)main.o $(BIN_DIR)sdlshape.o $(BIN_DIR)sdlevent.o
进阶自动匹配写法
如果你的源文件数量较多,还可以用Makefile的内置函数自动匹配源文件,避免手动逐个列举:
SRC_DIR := src/ BIN_DIR := bin/ # 自动匹配src目录下所有.c格式的源文件 SRCS := $(wildcard $(SRC_DIR)*.c) # 将每个源文件路径转换为bin目录下对应的.o目标文件 OBJS := $(patsubst $(SRC_DIR)%.c, $(BIN_DIR)%.o, $(SRCS))
这种写法的优势很明显:比如哪天你想把src/改成source/,或者bin/改成build/,只需要修改SRC_DIR和BIN_DIR这两行变量定义,所有关联的路径都会自动更新,大幅降低维护成本。
内容的提问来源于stack exchange,提问作者3N4N
相关产品推荐
相关产品推荐

