makefile中的循环问题,shell怎么截取变量字符串的一部分

iceshan 2016-10-20 11:35:09
需要编译的.c文件位于不同的目录下,
在程序里表示为一个宏定义
PLT_INCLUDE_LIST = $(PLT_ROOT)\SRC\AppSWC.c \
$(PLT_ROOT)\SRC\DiagSWC.c \
$(PLT_ROOT)\..\..\..\..\PLT_cvob\Dsm\5_Release\Dsm_Cbk.c \
$(PLT_ROOT)\..\Plt_if.c
编译出来的.o文件需要放在同一个目录下
我最初手写的makefile大概为:
$(PLT_LIB)\AppSWC.o : $(PLT_ROOT)\SRC\AppSWC.c
$(CC) blablablabla...
$(PLT_LIB)\DiagSWC.o : $(PLT_ROOT)\SRC\DiagSWC.c
$(CC) blablablabla...
$(PLT_LIB)\Dsm_Cbk.o : $(PLT_ROOT)\..\..\..\..\PLT_cvob\Dsm\5_Release\Dsm_Cbk.c
$(CC) blablablabla...
$(PLT_LIB)\Plt_if.o : $(PLT_ROOT)\..\Plt_if.c
$(CC) blablablabla...

现在.c文件扩充了数倍,并且需要把依赖关系写进dep
我想用for循环来写这个makefile
例如
for i in $(PLT_INCLUDE_LIST); do \
echo "$(LIB_PLT)\\\【target】:$$i">> test.dep; \
done;

很明显,这个target需要从$$i中截取nodir部分,并替换.c为.o得到。makefile里有这样的函数,但使用这个函数无法解析shell变量$$i
shell里应该怎么写?
...全文
1058 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
DreamLife. 2016-11-08
  • 打赏
  • 举报
回复
菜鸟帮顶
iceshan 2016-11-08
  • 打赏
  • 举报
回复
求关注啊,这个问题真的困扰我很久了

23,117

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧