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

如何在Makefile中提取文件列表中的文件名(不含路径与后缀)

Makefile提取纯文件名(不含路径与后缀)的实现方法

已知通过SOURCES = $(wildcard src/**/*.cpp)获取了带完整路径的.cpp源文件列表,要提取出仅包含文件名(去掉路径和.cpp后缀)的列表NAMES,可以通过Makefile内置函数组合实现:

方法一:使用notdir + basename

SOURCES = $(wildcard src/**/*.cpp)
NAMES = $(basename $(notdir $(SOURCES)))

函数作用说明:

  • $(notdir $(SOURCES)):移除每个文件的路径部分,把src/dir_one/file_one.cpp这类带路径的文件名转换为file_one.cpp
  • $(basename ...):移除文件名的后缀部分,把file_one.cpp转换为file_one

方法二:使用notdir + patsubst

也可以用模式替换函数patsubst替代basename,效果完全一致:

SOURCES = $(wildcard src/**/*.cpp)
NAMES = $(patsubst %.cpp,%,$(notdir $(SOURCES)))

函数作用说明:

  • $(patsubst %.cpp,%,...):将所有以.cpp结尾的字符串,替换为去掉.cpp的部分,实现后缀移除的效果

验证结果

代入示例中的SOURCES列表,两种方法最终得到的NAMES值均为:

file_one file_two file_three file_four file_five

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:35:55