首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >makefile中的subst for-loop元素?

makefile中的subst for-loop元素?
EN

Stack Overflow用户
提问于 2012-05-03 10:32:41
回答 2查看 1.4K关注 0票数 2

假设我的Makefile如下:

代码语言:javascript
复制
FILES = hello.py
PHONY: hi
hi:
    -@for file in $(FILES); do \
            (echo $$file; \
            echo $(subst py,xml,$$file); \
            echo $(subst py,xml,hello.py)); \
    done

调用make时,将打印以下内容:

代码语言:javascript
复制
hello.py
hello.py
hello.xml

我可以知道为什么echo $(subst py,xml,$$file);不能按照我想要的方式工作(回显hello.xml而不是hello.ph)吗?另外,如果您对如何修改这个for-loop元素有任何建议,请告诉我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-03 10:44:39

它不工作的原因是Make扩展了$(subst...)来生成文本,然后将文本传递给shell,并且您正在尝试基于shell在展开"$file“时将生成的文本进行替换。处理此问题的一种简单方法是在shell中进行所有扩展:

代码语言:javascript
复制
FILES = hello.py
PHONY: hi
hi:
    -@for file in $(FILES); do \
            echo $$file; \
            echo $${file%py}xml; \
    done
票数 2
EN

Stack Overflow用户

发布于 2020-07-29 22:00:47

foreach命令可能会有所帮助

代码语言:javascript
复制
FILES = hello.py hello2.py hello3.py
PHONY: hi
hi:
    $(foreach file,$(FILES),echo $(subst py,xml,$(file));)

输出

代码语言:javascript
复制
echo hello.xml; echo hello2.xml; echo hello3.xml;
hello.xml
hello2.xml
hello3.xml
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10424340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档