makefile中的循环问题,shell怎么截取变量字符串的一部分
需要编译的.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里应该怎么写?