首页 > 解决方案 > 将路径字符串列表解析为make中不同路径的更好方法?

问题描述

我正在使用来自 Atmel 的自动生成的 make 文件。链接时,它使用变量 $(OBJS_AS_ARGS)。在哪里:

OBJS_AS_ARGS +=  \
"hal/src/hal_io.o" \
"hpl/systick/hpl_systick.o" \
"samd21a/gcc/gcc/startup_samd21.o" \
"hal/utils/src/utils_syscalls.o" \
"hal/src/hal_delay.o" \
"hpl/pm/hpl_pm.o" \
"hpl/core/hpl_init.o" \
"samd21a/gcc/system_samd21.o" \
"hpl/core/hpl_core_m0plus_base.o" \

我的目标是将每个字符串的路径更改为相对于父级,即:

OBJS_AS_ARGS +=  \  
"../hal/src/hal_io.o" \
"../hpl/systick/hpl_systick.o" \

我在前面加上 ../ 我正在考虑一些 vpath 方式来做到这一点。或者也许是字符串连接。但是,该变量是一个字符串列表。我最终将 ../ 添加到每个字符串。有没有办法设置一个可以代替我修改每个字符串的变量/vpath?谢谢你。

标签: makefilegnu-make

解决方案


我不清楚您到底要做什么,但是通过您的示例,这是否符合您的要求?有关patsubst 函数的更多信息。

NEW_ARGS := $(patsubst "%","../%",$(OBJS_AS_ARGS))

推荐阅读