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

如何在Makefile中为带空格的双引号路径添加前缀并提取目录

从文件路径提取目录生成Makefile INCLUDE变量

你说的要从文件路径里只提取目录部分的Makefile函数,是$(dir)!刚好能解决你的需求。

先看你现有的定义:

FOLDERS = "C:\Program Files\some3rdpartytool\inc\thing1.h" \
          "C:\Program Files\some3rdpartytool\lib\libthing.lib" \
          "C:\data\data1.h" \

如果直接用$(addprefix -I, $(FOLDERS))会把文件名也包含进去,显然不是你想要的结果。正确的写法是先用$(dir)提取每个路径的目录部分,再给它们加上-I前缀:

INCLUDE = $(addprefix -I, $(dir $(FOLDERS)))

简单拆解一下这个命令:

  • $(dir $(FOLDERS))会逐个处理FOLDERS里的每个路径,提取出对应的目录部分,处理后会得到:
    "C:\Program Files\some3rdpartytool\inc\" "C:\Program Files\some3rdpartytool\lib\" "C:\data\"
    
  • 接着$(addprefix -I, ...)会给每个提取出来的目录前面加上-I前缀,最终就生成了你需要的INCLUDE变量内容。

额外提个小细节:要是你担心目录末尾的反斜杠可能带来问题,也可以用$(patsubst)配合做处理,但$(dir)是最直接原生的方案,完全能满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:00:04