这是一个简化的Makefile但暴露了我面临的同样问题:
all:
for i in *.pod; do g=${i%%.pod}; echo ${g};done
我想要的是获取没有后缀的文件名。但是当我运行make时,我看到了:
for i in *.pod; do g=; echo ;done
在我看来,贝壳中的美元替代完全被削掉了。
这样做的正确方法是什么?
答案 0 :(得分:0)
以下模式替换应该足够(确保使用制表符):
SRC = $(wildcard *.pod)
BIN = $(patsubst %.pod;,%,$(SRC))
all:
echo $(BIN)
答案 1 :(得分:0)
make展开它找到的所有$(something)
和${something}
,并将其替换为 make 变量something
的值。因此,如果您想使用shell变量并阻止make扩展它们,只需将$
符号加倍(如果它受到单个make扩展的影响,则需要更多$
个符号)。在你的情况下:
all:
for i in *.pod; do g=$${i%%.pod}; echo $${g}; done
应该有用。